gpt4 book ai didi

c# - 如何将两个命令绑定(bind)到 WPF 按钮?

转载 作者:行者123 更新时间:2023-11-30 19:08:37 26 4
gpt4 key购买 nike

我正在使用带有 MVVM 模式的 WPF。我有一个按钮,我有两个命令。此外,我有一个复选框。我想将不同的命令绑定(bind)到按钮,具体取决于复选框 IsChecked 与否,例如

如果我点击我的按钮,它会显示一个消息框;

如果我选中复选框并单击我的按钮,它会显示一个新窗口或其他内容..

我有一个解决方案,但我认为可以有更好的解决方案:

我的 View 模型:

ICommand command1 { get; set; }
ICommand command2 { get; set; }
ICommand commandSelector
{
get
{
if (checkbox)
{
return command1;
}
else
{
return command2;
}
}
private set { }
}

我的 XAML:

<Button Label="DO" Command="{Binding commandSelector}"/>

最佳答案

可以在触发器中更改命令属性绑定(bind):

<Button Label="DO">    
<Button.Style>
<Style TargetType="Button">
<Setter Property="Command" Value="{Binding command2}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=someCheckBox}" Value="True">
<Setter Property="Command" Value="{Binding command1}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

但可能最好只有一个命令,并根据命令处理程序中的检查状态执行不同的操作:

ICommand commandSelector { get; set; }

private void commandSelectorExecute(object o)
{
if (checkbox)
DoSmth();
else
DoSmthElse();
}

关于c# - 如何将两个命令绑定(bind)到 WPF 按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50508654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com