我有一个WPF界面,我有很多(超过40个)按钮执行类似的任务,按钮名称参数化,我已经链接到一个命令。在我的命令处理程序中,我有工具来确定点击了40个按钮中的哪一个。问题是如何根据运行时条件有选择地禁用或启用其中一些命令。有人担心,将一个CanExecute方法应用于不同的组件并根据e.Source身份进行区分是不行的。
答案 0 :(得分:1)
如果执行逻辑不同,我没有看到任何理由将所有按钮绑定到同一命令。
我真的希望看到命令分开,而不是一个带有所有按钮名称的大if if块
答案 1 :(得分:0)
测试表明,使用以下列方式构建的CanExecute方法可以实现这一点:
private void MyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
if (e.Source == button1)
e.CanExecute = checkBox1.IsChecked.HasValue ? checkBox1.IsChecked.Value : false;
if (e.Source == button2)
e.CanExecute = checkBox2.IsChecked.HasValue ? checkBox2.IsChecked.Value : false;
if (e.Source == button3)
e.CanExecute = checkBox3.IsChecked.HasValue ? checkBox3.IsChecked.Value : false;
}