相关疑难解决方法(0)

将命令绑定到ToggleButton Checked和Unchecked事件

我在我的C#WPF应用程序中有一个ToggleButton,我想将一个Command绑定到Checked事件,将一个Command绑定到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"/>
Run Code Online (Sandbox Code Playgroud)

但这不是我的目标.因为在这种情况下,我必须在Checked和Unchecked事件的代码后面设置属性.相反,我想在Checked或Unchecked事件被触发后在我的ViewModel中调用一个Command(ICommand),这样我的切换按钮后面不需要任何代码.

有没有办法直接为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"
Run Code Online (Sandbox Code Playgroud)

2:已检查和未检查事件的已实现Interaction.Triggers:

<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>
Run Code Online (Sandbox Code Playgroud)

有了这个解决方案,我不必在我的ViewModel或后面的代码中更改一行代码.我可以调用我的ICommand,就像我在MVVM模式下使用标准按钮一样.

wpf xaml command togglebutton

12
推荐指数
3
解决办法
2万
查看次数

标签 统计

command ×1

togglebutton ×1

wpf ×1

xaml ×1