我有一个组合框用于选择屏幕分辨率宽x高。例如 : 1024x768(标准) 800x699(标准) 1500x900(宽)
我有一个MutliValueConverter将分辨率字符串转换为视图模型的宽度和高度成员(在转换器的ConvertBack方法中),但Convert方法只返回null。
在我所拥有的组合框的xaml中
<ComboBox.Text>
<MultiBinding Converter="{StaticResource resolutionConverter}">
<Binding Path="GameWidth"/>
<Binding Path="GameHeight"/>
</MultiBinding>
</ComboBox.Text>
当我单击以选择组合框中的值时,组合框将回退到不选择任何内容。那是为什么?
答案 0 :(得分:1)
我不认为你应该做那样的事情,通常你只需要将ItemsSource
设置为你的viewmodels集合,将DisplayMemberPath
设置为保存显示字符串的属性的名称那应该是关于它的。然后,所选项目将成为视图模型。
如果视图模型没有显示字符串,您可以绑定到<string,ViewModel>
的字典,那么您需要将DisplayMemberPath
设置为Key
,将SelectedValuePath
设置为{{ 1}},然后所选的VM将位于Value
属性中。
(生成项目显示字符串的另一个选项是使用SelectedValue
。当然,VM应该具有可以在其中使用的合适属性。这与{{1}不能很好地协同工作虽然)