0

以下是我的 xaml:

<CheckBox Name="CheckBoxNoFindings" Content="No Findings" Command="{Binding DisableRteCommand}" CommandParameter="{Binding Path=Content}" Grid.Row="1" Grid.Column="1" Margin="2,5,0,3" />

我想将两者IsCheckedContent属性值都传递给命令参数并从 VM 访问它们。

虚拟机代码:

private void DisableRte(object args)
{
    if (null != args)
    {
         string rteName = args.ToString();
    }
}

实际要求是,在选中复选框时,应禁用文本框,并将复选框的内容应用于 texbox 的文本。而对面,取消选中复选框文本框应启用,文本应为空。

这种情况的任何解决方案?

4

2 回答 2

2

嗯,你希望它完成的方式对我来说似乎有点奇怪。你为什么不在你的虚拟机中以“简单的方式”实现它?例如

public class CheckBoxExampleVm : ViewModelBase //assuming you have such a base class
{
    private bool? _isChecked;
    public bool? IsChecked
    {
        get { return _isChecked; }
        set 
        {
            _isChecked = value;
            ModifyTextValue(value);
            RaisePropertyChanged("IsChecked");
        }
    }

    private string _textValue;
    public string TextValue
    {
        get { return _textValue; }
        set 
        {
            _textValue = value;
            RaisePropertyChanged("TextValue");
        }
    }

    private void ModifyTextValue(bool? condition)
    {
        // do what ever you want with the text value
    }
}

现在您只需要设置绑定,一切都很好。

另一种选择是使用转换器和元素绑定,这样您就不必在 VM 本身中实现它。

于 2013-05-14T12:25:39.370 回答
1

CheckBox如果其他建议对您不起作用,您可以将整个过程传递给 VM。

<CheckBox ... CommandParameter="{Binding RelativeSource={RelativeSource Self}}"/>
于 2013-05-14T13:31:34.000 回答