Здравствуйте. Есть такой вот самописный элемент управления:
<controls:ToggleList x:Name="toggleList" Grid.Row="4" x:Uid="PublishersToggleList" Items="{Binding PublishersList}">
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="SelectedItemChanged">
<Core:InvokeCommandAction Command="{Binding PublishersChandgedCommand}"
CommandParameter="{Binding SelectedItem, ElementName=toggleList, Mode=OneWay}"/>
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</controls:ToggleList>
Код привязанной команды:
public RelayCommand<Publisher> PublishersChandgedCommand
{
get
{
return new RelayCommand<Publisher>((arg) =>
{
if (arg != null)
{
SelectByPublisher(arg);
}
});
}
Почему подобный подход не работает для элемента коллекции другого типа? Например, когда я делаю вот так:
<controls:ToggleList x:Name="toggleList" Grid.Row="4" x:Uid="PublishersToggleList" Items="{Binding AutorList}">
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="SelectedItemChanged">
<Core:InvokeCommandAction Command="{Binding AutorListChandgedCommand}"
CommandParameter="{Binding SelectedItem, ElementName=toggleList, Mode=OneWay}"/>
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</controls:ToggleList>
Команда привязывается, но при возникновении события SelectedItemChanged, внутри MVVM Light возникает ошибка System.InvalidCastException в методе Execute