Mam ToggleButton w mojej aplikacji C# WPF, w którym chciałbym powiązać jedno polecenie do zdarzenia Checked i jedno polecenie do zdarzenia Unchecked.Powiązanie poleceń z ToggleButton Sprawdzone i niezaznaczone zdarzenia
co mam obecnie jest następujący:
<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"/>
Ale to nie jest to, co staram się robić. Ponieważ w tym przypadku musiałbym ustawić właściwości w kodzie za zdarzeń Checked i Unchecked. Zamiast tego chciałbym wywołać komendę (ICommand) w moim ViewModelu po uruchomieniu zdarzenia Checked lub Unchecked, więc nie potrzebuję żadnego kodu za moim przełącznikiem.
Czy istnieje sposób powiązania polecenia bezpośrednio dla tych dwóch zdarzeń w XAML? Podobne do właściwości polecenia kontrolki przycisku "standard" w WPF?
EDIT Jak to działa w odniesieniu do @ har07 podpowiedź:
1: Dodano odniesienia, jeśli nie masz go jeszcze:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
2: Zaimplementowane Interaction.Triggers dla sprawdzone i Niezaznaczone zdarzenia:
<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>
Dzięki temu rozwiązaniu nie muszę zmieniać pojedynczej linii kodu i n mój ViewModel lub mój kod za. Mogę po prostu zadzwonić do mojego ICommandu, tak jak zrobiłbym to standardowym przyciskiem podążając za wzorcem MVVM.
Zaimplementowałem go za pomocą Ineraction.Triggers. To po prostu działa idealnie! To dokładnie to, czego potrzebuję! Dziękuję bardzo! – ck84vi