1

查看标准的 WPF 命令,例如复制/粘贴,它们似乎都使用一个按钮并作用于文本框。

我的问题:当我有一个按钮时如何使用命令,但我需要在两个单独的控件(一个文本框和一个组合框)中设置数据。如果用户在文本框中写入文本,但未选择组合框值,则 CanExecute 应该会失败。这适用于已设置组合框但不设置文本框的情况。

具体来说,就我而言,所有这些控件都包含在一个 tabitem 中。同样,我还有另一个选项卡,只有一个文本框和一个按钮。我希望它具有与第一个选项卡相同的功能,除了它不检查组合框值,它应该检测到没有组合框并传入默认的“空对象”值。

Execute 方法应该在我的视图模型中调用一个方法,并从组合框和文本框中传入值。同样,每个选项卡都应该传入另一个唯一的静态值;我想我可以使用命令参数来处理这个问题。

我该如何进行这项工作?我是否将父选项卡设为 commandtarget 并在 can/execute 方法中直接引用其子控件?

4

1 回答 1

0

您需要实现检查 TextBox 数据绑定值和 ComboBox.SelectedItem 数据绑定值的 CanExecute 方法。

以您的问题为例。

您的 TextBox.Text 应该数据绑定到您的 ViewModel 以及您的 ComboBox。所以你的 ViewModel 应该有两个属性:

public string TextBoxCurrentText {get { ...}set {...}}
public string ComboBoxCurrentSelected {get { ...}set {...}}

然后在两个 Setter 中,你会做你的YourCommmand.RaiseCanExecuteChanged();

所以它会执行你的 CanExecute 代码片段来确定你的按钮是否可以被点击。可以是:

    bool YourCommandCanExecute()
    {
//Just example
        if (!string.IsNullOrEmpty(TextBoxCurrentText) && !string.IsNullOrEmpty(ComboBoxCurrentSelected))
            return true;
         return false;
    }
于 2012-02-27T21:32:57.387 回答