一个ComboBox选择可以绑定到两个不同的数据吗?

时间:2012-02-08 17:50:11

标签: wpf binding combobox multibinding

我不确定这是否可行。我创建了一个像这样的ComboBox ......

<ComboBox Name="testType"
          Margin="0,5,0,0"
          IsTextSearchEnabled="True"
          DisplayMemberPath="Description"
          SelectedValue="{Binding MyClass.Id, Mode=TwoWay}"
          SelectedValuePath="Id"/>

后面的代码加载了可用的选项......

        DataTable testCatList = TestTypeBase.GetAll();
        testType.ItemsSource = testCatList.DefaultView;

以便它正确显示MyClass中的所有项目。当用户进行选择时,MyClass中的Id字段将按预期更新。大。

这是我的问题:我的testCatList包含每个行的Id和Description,我希望这两个字段都绑定到当前的MyClass实例。所以这就是我的尝试:

<ComboBox Name="testType"
          Margin="0,5,0,0"
          IsTextSearchEnabled="True"
          DisplayMemberPath="Description">
    <ComboBox.SelectedValue>
        <MultiBinding Converter="{???}">
            <Binding Path="MyClass.Id" Mode="TwoWay"/>
            <Binding Path="MyClass.Description" Mode="TwoWay"/>
        </MultiBinding>
    </ComboBox.SelectedValue>
</ComboBox>

在这里,我想将MyClass.Id设置为所选的Id,并将MyClass.Description设置为所选的Description。正如您所看到的,我已经删除了SelectedValuePath,因为我不再需要Id了。但我不知道转换器应该使用什么(参见上面的问号)。

任何想法,StackOverflow的专家哦?感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,请尝试使用SelectedItem属性而不是SelectedValue。 通过这种方式,您将获得所选的MyClass实例,当然还有所有属性。

SelectedItem="{Binding CurrentSelectedMyClassItem}"