如何绑定到WPF组合框?

时间:2013-12-12 16:33:56

标签: .net c#-4.0 wpf-controls

我想将两个类属性绑定到组合框的显示。含义:

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);

因为我想提取所选的完整课程。这将发生在按钮点击事件上。

1 个答案:

答案 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的用途。