如何在Silverlight中的两个组合框中进行双向绑定

时间:2012-08-22 06:25:32

标签: c# wpf silverlight xaml data-binding

在一个项目中我展示了两个ComboBoxes让我们说ComboBox1和ComboBox2。我将ComboBox与KeyValue对绑定。字典让我们说下面给出的dictionary1。

ComboBox1.ItemsSource = dictionary1 ;
ComboBox1.SelectedItem = ComboBox1.Items[0];

//Setting the Item Source of Patient Name Combo Box.
ComboBox2.ItemsSource = dictionary1 ;
ComboBox2.SelectedItem = ComboBox2.Items[0];

在XAML部分中,我在CombBox1中显示Key,并在Dictionary的ComboBox2中显示Value,如下所述: -

<ComboBox
       x:Name             ="ComboBox1"
       DisplayMemberPath  ="Key"
       SelectedValue      ="{Binding Source=ComboBox2, Path=DisplayMemberPath, Mode=TwoWay}"/>

<ComboBox
       x:Name              ="ComboBox2"
       DisplayMemberPath   ="Value"
       SelectionChanged    ="ComboBox2_SelectionChanged"
       />

目的: - 如果我更改ComboBox1中的选择,那么它应该影响ComboBox2.SelectedItem的相应值,如果我更改ComboBox2中的选择,那么它应该影响ComboBox1.SelectedItem中的相应键值。

有人能告诉我上面代码中的错误在哪里,或者请帮助我完成上述目标。提前谢谢。

2 个答案:

答案 0 :(得分:1)

这应该有效

<ComboBox
       x:Name             ="ComboBox1"
       DisplayMemberPath  ="Key"
       SelectedItem      ="{Binding ElementName=ComboBox2, Path=SelectedItem, Mode=TwoWay}"/>

<ComboBox
       x:Name              ="ComboBox2"
       DisplayMemberPath   ="Value"
       />

答案 1 :(得分:1)

我至少可以看到两个问题:

  1. 需要 ElementName 而非来源
  2. 应该路径而不是 DisplayMemberPath
  3. 我认为这应该有效:

    <ComboBox
       x:Name             ="ComboBox1"
       DisplayMemberPath  ="Key"
       SelectedValue      ="{Binding ElementName=ComboBox2, Path=SelectedValue}"/>
    
    <ComboBox
       x:Name             ="ComboBox2"
       DisplayMemberPath  ="Value" />