Ошибка при привязке значения таблицы к Combobox - wpf - PullRequest
0 голосов
/ 19 марта 2019

У меня есть выпадающий список, который должен динамически связывать данные из базы данных.

Источник комбо-ящика - наблюдаемая коллекция.

Шаги, за которыми я следовал:

  1. Объявлен комбинированный список:

    <ComboBox ItemsSource="{Binding populatecombobox.modeltogetusername }" Width="155" Margin="18,15,618,0"/>
    
  2. Создан класс для получения данных из базы данных:

    public class populatetab2combobox
    {
        public ObservableCollection<comboboxdata> modeltogetusername { get; set; }
    
        public void getdatausinglinq()
        {
            using (Operations_Productivity_ToolEntities context = new Operations_Productivity_ToolEntities())
            {
                var a1 = from t1 in context.Test_ImportedAuditdata
                         select t1;
    
                if (modeltogetusername == null)
                    modeltogetusername = new ObservableCollection<comboboxdata>();
    
                foreach (var a in a1.GroupBy(x => x.username).Select(x => x.FirstOrDefault()))
                {
                    modeltogetusername.Add(new comboboxdata
                    {
                     username = a.username
                    });
    
                }
            }
    
        }
    
    }
    
  3. Использование вышеупомянутого класса в viewmodel

    public class ViewModel: INotifyPropertyChanged {
    private populatetab2combobox _populatecombobox = new populatetab2combobox();
    
    public populatetab2combobox populatecombobox {
        get {
            return _populatecombobox;
        }
        set {
            if (value != _populatecombobox) {
                _populatecombobox = value;
                OnPropertyChanged("populatecombobox");
            }
        }
    }
    public ViewModel() {
        _populatecombobox.getdatausinglinq();
    }
    

    } ​​

Ожидаемый результат:

Ren1
Ren2

Фактический вывод

Namespace.Model.comboxdata
Namespace.Model.comboxdata

1 Ответ

0 голосов
/ 19 марта 2019

Вы получаете выходные данные метода ToString () и связываетесь с экземплярами класса comboboxdata, а не с именем пользователя внутри него.

У вас есть 2 варианта.Во-первых, вы можете изменить свой xaml на это уведомление о том, как мы привязываем свойство к шаблону элемента.

<ComboBox ItemsSource="{Binding populatecombobox.modeltogetusername }" Width="155" Margin="18,15,618,0">
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding username}"/>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>

Во-вторых, вы можете переопределить метод ToString () в comboboxdata, чтобы вернуть имя пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...