Ahmad Aldali Ответов: 1

Преобразование данных из строки в флажок с помощью ivalueconverter в WPF


У меня проблема с моим приложением. Я создаю приложение с помощью WPF. У меня есть данные, которые импортируются из БД с помощью observablecollection, часть этих данных (одно свойство) является строкой, и я хочу привязать эти данные к флажкам, которые выглядят так
(abc_abcd/abc_abcd/abc_abcd.....)
каждый abc_abcd он должен быть связан с одним флажком( эта строка является авторизацией пользователя и хранится в базе данных как одна строка, но когда я хочу привязать ее к флажкам, я должен пролить ее, а затем сравнить со статическим значением для каждого флажка, чтобы узнать, должен ли флажок tjis быть установлен или нет ). Я знаю, что мне следует использовать ivalueconverter, но я понятия не имею, как это сделать. любое решение, Пожалуйста......


class Operator
    {
        public string operatorname { get ; set; }
        public string  operatorpassword { get; set; }
        public string authorisation { get; set; } 
        public Boolean renew_password { get; set; }
        public int interval_of_change { get; set; }
        public int password_min_length { get; set; }
        public DateTime last_change { get; set; }
    }


 class Databasecon  
    {
       

       

        // First Binding for the Database
       public ObservableCollection<Operator> operators { get; private set; }


        public Databasecon()
        {

            this.operators = new ObservableCollection<Operator>();
            
        }
       
       public void Datacon(string conn)
        {
            MySqlConnection con = null;
            MySqlCommand com = null;
            MySqlDataReader myreader = null;
            int columnOrdinaloperatorname = -1;
            int columnOrdinalauthorisation = -1;


            con = new MySqlConnection(conn);
            try
            {
                if (com == null)
                {
                    com = new MySqlCommand("SELECT * FROM operators", con);
                    com.Connection.Open();

                    myreader = com.ExecuteReader();
                    columnOrdinaloperatorname = myreader.GetOrdinal("operator_name");
                    columnOrdinalauthorisation = myreader.GetOrdinal("authorisation");

                    while (myreader.Read())
                    {

                        this.operators.Add(new Operator() {
                            operatorname = myreader.GetString(columnOrdinaloperatorname).ToString(),
                             // authorisation can be Null in DB
                            authorisation = (columnOrdinalauthorisation >= 0) ? (myreader.IsDBNull(columnOrdinalauthorisation) ? string.Empty : myreader.GetString(columnOrdinalauthorisation)) : string.Empty
                        }); 

                    }

                    
                    
                }


            }


            catch (MySqlException ex)
            {
                MessageBox.Show(ex.ToString());
               

            }
            finally
            {

                if (myreader != null)
                    myreader.Close();

                if (com != null)
                {
                    if (com.Connection != null)
                        com.Connection.Close();
                }
            
            }
    }
   
}

pre>


<pre lang="c#"></





class collect : INotifyPropertyChanged

    {

        string myconn = "SERVER=localhost;PORT=3306;UID=TestUser;PASSWORD=TestUser;DATABASE=heitel_db_v011";

        private Databasecon databasecon = null;

        public event PropertyChangedEventHandler PropertyChanged;

        public ICommand Bindingcommand { get; set; }





        public ObservableCollection<Operator> operators
        {
            get
            {
                if (this.databasecon.operators != null)
                   
                {
                       return this.databasecon.operators;
                   
                      
                }

                else
                {


                    return null;
                }
                   

            }
            set
            {
                this.operators = value; RaisePropertyChanged("operators");
            }

        }

        private void RaisePropertyChanged(string propertyName)
        {
            var handler = this.PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }


        public collect()
        { 
            this.databasecon = new Databasecon();
            Bindingcommand = new Relaycommands(() => databasecon.Datacon(myconn));
           
        }


    }


class Relaycommands : ICommand
    {
        public event EventHandler CanExecuteChanged;
        private Action _command;


        public Relaycommands(Action command)
        {
            _command = command;

        }
        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {
            if (_command != null)
                _command();
        }
    }


Что я уже пробовал:

Я пытаюсь написать конвертер, но не могу. Я не знаю, когда мне следует разлить строковые данные в слова и сохранить их в массиве

[no name]

"но я не мог", и ты думаешь, мы бы знали, что это значит? Возможно, потому, что строки не являются флажками?
"когда я должен разлить строковые данные в слова", "сохранить их в массиве", главная ошибка, которую вы совершаете, заключается в том, что вы предполагаете, что случайные незнакомцы в Интернете знают что-либо о вашем проекте. У нас нет никакой информации о том, когда и почему вам нужно разбить эту строку или какое отношение имеет массив к чему-либо. Мы также понятия не имеем, какое отношение этот класс операторов имеет к чему-либо, поскольку он, по-видимому, не имеет никакого отношения ни к какому преобразователю значений.

Ahmad Aldali

извините, я редактирую свой quistion, объясняю все и ставлю весь код