Multibinding ComboBox.Text

时间:2011-09-29 23:17:47

标签: c# wpf xaml data-binding combobox

我有一个组合框用于选择屏幕分辨率宽x高。例如 : 1024x768(标准) 800x699(标准) 1500x900(宽)

我有一个MutliValueConverter将分辨率字符串转换为视图模型的宽度和高度成员(在转换器的ConvertBack方法中),但Convert方法只返回n​​ull。

在我所拥有的组合框的xaml中

<ComboBox.Text>
    <MultiBinding Converter="{StaticResource resolutionConverter}">
        <Binding Path="GameWidth"/>
        <Binding Path="GameHeight"/>
    </MultiBinding>
</ComboBox.Text>

当我单击以选择组合框中的值时,组合框将回退到不选择任何内容。那是为什么?

1 个答案:

答案 0 :(得分:1)

我不认为你应该做那样的事情,通常你只需要将ItemsSource设置为你的viewmodels集合,将DisplayMemberPath设置为保存显示字符串的属性的名称那应该是关于它的。然后,所选项目将成为视图模型。

如果视图模型没有显示字符串,您可以绑定到<string,ViewModel>的字典,那么您需要将DisplayMemberPath设置为Key,将SelectedValuePath设置为{{ 1}},然后所选的VM将位于Value属性中。

(生成项目显示字符串的另一个选项是使用SelectedValue。当然,VM应该具有可以在其中使用的合适属性。这与{{1}不能很好地协同工作虽然)