我想在 win 7 上用 C# WPF VS2013 设计一个组合框,比如
https://msdn.microsoft.com/en-us/library/windows/desktop/dn742404%28v=vs.85%29.aspx#guidelines
我的 xaml 代码:
<ComboBox Grid.Row="1" Grid.Column="1"
SelectedItem="{Binding MyObject}"
Margin="5" ItemsSource="{Binding MyObjList}"
DisplayMemberPath="Name"
/>
// MyObjList is a list of MyObject
public class MyObject
{
int id;
string Name;
}
尽管我已经在后面的C#代码中初始化了MyObjList,但下拉列表组合框meue是空白的。
我搜索了一些相关帖子
未选择任何项目时如何在组合框中显示文本?
WPF 组合框错误的空白值
但是,它们都不适合我。
谁能指出我在哪里犯了错误?
J.H 在他的评论中已经给出了您的问题的答案。 让我详细说明一下。
代码中的错误:
- 类
MyObject
的成员应该是Properties
的,而不是字段。 - 此外,与
ViewModel
成员相同(我希望您已将其定义为字段)
这是工作解决方案:
我的对象.cs
public class MyObject
{
//int id;
//string Name;
public int id { get; set; }
public string Name { get; set; }
}
我的视图模型.cs
public class MyViewModel
{
public ObservableCollection<MyObject> MyObjList { get; set; }
}
MainWindow.xaml.cs
public MainWindow()
{
InitializeComponent();
ObservableCollection<MyObject> objs = new ObservableCollection<MyObject>();
objs.Add(new MyObject() { id = 1, Name = "Someone1" });
objs.Add(new MyObject() { id = 2, Name = "Someone2" });
this.DataContext = new MyViewModel() { MyObjList = objs };
}
MainWindow.xaml
<ComboBox Grid.Row="1" Grid.Column="1"
SelectedItem="{Binding MyObject}"
Margin="5" ItemsSource="{Binding MyObjList}"
DisplayMemberPath="Name"/>