0

我有一个 WPF 界面,其中有许多(超过 40 个)按钮,它们执行由按钮名称参数化的类似任务,我已链接到一个命令。在我的命令处理程序中,我有一些工具可以确定单击了 40 个按钮中的哪一个。问题是如何根据运行时条件有选择地禁用或启用其中一些命令。有人担心,将一种 CanExecute 方法应用于不同的组件并根据 e.Source 身份进行区分是行不通的。

4

2 回答 2

1

如果执行逻辑不同,我看不出有任何理由将所有按钮绑定到同一个命令。

我真的很想看到单独的命令,而不是带有所有按钮名称的大 if else 块

于 2012-11-30T10:47:13.220 回答
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;
}
于 2012-11-30T11:32:06.337 回答