将表值绑定到组合框时出错-WPF

时间:2019-03-19 18:04:21

标签: c# wpf

我有一个组合框,可以动态绑定数据库中的数据。

组合框的来源是一个可观察的集合。

我遵循的步骤:

  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. 在视图模型中实例化上述类

    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 :(得分:0)

您将获得ToString()方法的输出,并且绑定到comboboxdata类的实例,而不是其内部的用户名。

您有2个选项。 首先,您可以将xaml更改为此通知,以了解我们如何绑定到项目模板中的属性。

"ABC"

第二,您可以覆盖comboboxdata上的ToString()方法以返回用户名