我有一个组合框,可以动态绑定数据库中的数据。
组合框的来源是一个可观察的集合。
我遵循的步骤:
声明了一个组合框:
<ComboBox ItemsSource="{Binding populatecombobox.modeltogetusername }" Width="155" Margin="18,15,618,0"/>
创建了一个类以从数据库获取数据:
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
});
}
}
}
}
在视图模型中实例化上述类
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
答案 0 :(得分:0)
您将获得ToString()方法的输出,并且绑定到comboboxdata类的实例,而不是其内部的用户名。
您有2个选项。 首先,您可以将xaml更改为此通知,以了解我们如何绑定到项目模板中的属性。
"ABC"
第二,您可以覆盖comboboxdata上的ToString()方法以返回用户名