У меня есть ToggleButton в моем приложении WPF для С#, где я хотел бы привязать одну команду к проверенному событию и одну команду к событию Unchecked.
В настоящее время у меня есть следующее:
<ToggleButton Name="btnOpenPort" Style="{StaticResource myOnOffBtnStyle}" Content="Open Port"
Checked="btnOpenPort_Checked" Unchecked="btnOpenPort_Unchecked"
IsChecked="{Binding Path=PortViewModel.PortIsOpen, Mode=OneWay}"
Canvas.Left="75" Canvas.Top="80" Height="25" Width="100"/>
Но я не хочу этого делать. Поскольку в этом случае мне нужно было бы установить свойства в коде для события Checked and Unchecked. Вместо этого я хотел бы вызвать команду (ICommand) в моей ViewModel после того, как событие Checked or Unchecked будет запущено, так что мне не нужен какой-либо код для моей кнопки переключения.
Есть ли способ связать команду непосредственно для этих двух событий в XAML? Как и свойство команды "стандартного" управления кнопками в WPF?
ИЗМЕНИТЬ Вот как это работает в отношении подсказки @har07:
1: Добавлены ссылки, если вы еще этого не сделали:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
2: Реализованное взаимодействие. Тестирование для отмеченных и непроверенных событий:
<ToggleButton
Name="btnOpenPort" Style="{StaticResource myOnOffBtnStyle}" Content="Open Port"
IsChecked="{Binding Path=PortViewModel.PortIsOpen, Mode=OneWay}"
Canvas.Left="75" Canvas.Top="80" Height="25" Width="100">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding Path=PortViewModel.OpenPort}"/>
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<i:InvokeCommandAction Command="{Binding Path=PortViewModel.ClosePort}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ToggleButton>
С помощью этого решения мне не нужно менять одну строку кода в моей модели ViewModel или моем коде. Я могу просто позвонить своей ICommand, как я бы сделал это со стандартной кнопкой после шаблона MVVM.