无法将'System.Windows.Controls.ListBoxItem:MyType'从类型'ListBoxItem'转换为'MyType'类型

时间:2011-02-02 13:58:22

标签: wpf data-binding binding

我有以下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中指定项目吗?

提前致谢

麦克

1 个答案:

答案 0 :(得分:3)

将SelectedValue与SelectedValuePath结合使用:

<ListBox SelectedValue="{Binding SelectedTeam}"
         SelectedValuePath="Content">
    <ListBoxItem Content="{Binding Match.HomeTeam}" />
    <ListBoxItem Content="{Binding Match.RoadTeam}" />
</ListBox>