我想将两个类属性绑定到组合框的显示。含义:
Jack - SupplyChain
Sarah - HR
James - IT
我有以下课程:
public class MyUser {
public string Name {get;set;}
public int EmpID {get;set;}
public string Department {get;set;}
}
当我将组合框设置为单个属性DisplayMemberPath =“Name”时,我会在下拉列表中看到对象名称。
我不确定如何将它绑定到两个属性,更不用说一个属性了。有谁知道怎么做?
我将MyClass对象添加到组合框:
MyComboBox.Items.Add(classInstance);
因为我想提取所选的完整课程。这将发生在按钮点击事件上。
答案 0 :(得分:1)
不要在WPF中的过程代码中操作UI元素。这就是XAML的用途。
创建一个简单的ViewModel:
public class MyViewModel
{
public ObservableCollection<MyUser> Users {get;set;}
public MyUser SelectedUser {get;set;}
}
然后将此ViewModel设置为UI的DataContext
public MyWindow()
{
InitializeComponent();
DataContext = new MyViewModel();
}
在XAML中:
<ComboBox ItemsSource="{Binding Users}"
SelectedItem="{Binding SelectedUser}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="Name"/>
<Binding Path="Department"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
<ComboBox.ItemTemplate>
</ComboBox>
然后,您只需使用相关数据填充Users
集合,无论何时需要检索所选值,都可以从SelectedUser
属性中检索值。无需从UI手动“读取”数据。这就是DataBinding的用途。