我有以下XAML:
<ListBox SelectedItem="{Binding SelectedTeam}">
<ListBoxItem Content="{Binding Match.HomeTeam}" />
<ListBoxItem Content="{Binding Match.RoadTeam}" />
</ListBox>
匹配的两个队伍出现在列表框中。但是,当我单击其中一个项目时,要设置视图模型的SelectedTeam属性,我在Visual Studio的输出窗口中显示此消息:
System.Windows.Data错误:23:不能 兑换 “System.Windows.Controls.ListBoxItem: Emidee.CommonEntities.Team'来自类型 输入'ListBoxItem' 'Emidee.CommonEntities.Team'代表 'en-US'文化与默认 转换;考虑使用Converter Binding的财产。 NotSupportedException异常:的“System.NotSupportedException: TypeConverter无法转换 System.Windows.Controls.ListBoxItem。
解决此问题的一种方法是在我的视图模型上创建一个IEnumerable,它将返回Match.HomeTeam和Match.RoadTeam,并将此属性绑定到列表框的ItemsSource属性。
但是还有另一个解决方案,它允许我像我一样在XAML中指定项目吗?
提前致谢
麦克
答案 0 :(得分:3)
将SelectedValue与SelectedValuePath结合使用:
<ListBox SelectedValue="{Binding SelectedTeam}"
SelectedValuePath="Content">
<ListBoxItem Content="{Binding Match.HomeTeam}" />
<ListBoxItem Content="{Binding Match.RoadTeam}" />
</ListBox>