Не удается преобразовать 'System.Windows.Controls.ListBoxItem: MyType' из типа 'ListBoxItem' в тип 'MyType' - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть следующий 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 с дефолтом преобразования; рассмотреть возможность использования конвертера Свойство Binding. NotSupportedException: 'System.NotSupportedException: TypeConverter не может конвертировать из System.Windows.Controls.ListBoxItem.

Один из способов решить эту проблему - создать IEnumerable в моей модели представления, который бы возвращал Match.HomeTeam и Match.RoadTeam и связывал это свойство со свойством ItemsSource списка.

Но есть ли другое решение, которое позволило бы мне указывать элементы в XAML, как я это сделал?

Заранее спасибо

Mike

1 Ответ

3 голосов
/ 02 февраля 2011

Использовать SelectedValue вместе с SelectedValuePath:

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