2011-04-13 24 views
8

因此,我有一个复选框,它使用WPF/MVVM触发命令,这很好,但我想使用复选框的IsChecked属性作为命令参数。我试过这个。如何在相同的复选框命令中使用isChecked作为命令参数

<CheckBox Margin="3" Content="Clear Selected OEM" 
           Command="{Binding Path=ClearOemCommand}" 
           CommandParameter="{Binding Path=IsChecked}"/> 

卜我在说

System.Windows.Data Error: 40 : BindingExpression path error: 'IsChecked' property not found on 'object' 

我想知道如何使用查找祖先,如果我想从另一个控制使用的财产,但在这里,我难倒输出窗口得到一个错误 - 这是可能比我想象的要容易...只是没有在我的脑海中建立联系。

谢谢!

+4

CommandParameter =“{绑定路径=器isChecked的RelativeSource =自} – Arseny 2011-04-13 13:39:49

+0

你应该做的是回答Arseny因此它可以upvoted和搜索更容易 – BlackICE 2011-04-13 13:46:46

+0

HTTP: //www.wpfwiki.com/WPF%20Q5.3.ashx – BlackICE 2011-04-13 13:48:28

回答

28

请加的RelativeSource自CommandParameter

<CheckBox Margin="3" Content="Clear Selected OEM" 
    Command="{Binding Path=ClearOemCommand}" 
    CommandParameter="{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}" /> 
+0

你错过了一个逗号:) – 2011-04-13 14:34:50

+0

@丹谢谢你! – Arseny 2011-04-13 14:50:12

+0

是否可以设置CheckBox的UnChecked状态相同的方式?同样的编译器说,你不能设置COM mandParameter不止一次。 – Sturm 2013-06-20 07:17:25

1

相反的复选框创建命令可以绑定与器isChecked一个CLR属性和CLR属性的setter方法执行你的命令的逻辑。这是处理命令行为的另一个解决方法。

3

如果遇到以下情况例外,像我一样...

设置属性System.Windows.Data.Binding.RelativeSource抛出异常

试试这个:

CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" 
2

是JW1是正确的。您可以使用的Elemen名字太像这样,那也将工作

"{Binding Path=IsChecked,ElementName=chkAll}"