我试过
<RadioButton Content="Boom" Command={Binding MyCommand} IsEnabled="{Binding IsChecked, Converter={StaticResource InverseBooleanConverter}, RelativeSource={RelativeSource Mode=Self}}"/>
但没有任何反应。为什么这样以及如何解决它?
答案 0 :(得分:0)
以下代码按预期工作:
<RadioButton Content="Boom" Command="{Binding MyCommand}" />
也就是说,就像常规Button
一样,每次点击MyCommand
时都会触发RadioButton
。如果你正在使用RadioButtons
,这可能不是你想要的。
更有用的是将某种数据作为CommandParameter
传递,以了解检查了哪个选项:
<RadioButton Content="AAA" Command="{Binding MyCommand}" CommandParameter="AAA" GroupName="MyGroup"/>
<RadioButton Content="BBB" Command="{Binding MyCommand}" CommandParameter="BBB" GroupName="MyGroup"/>
示例命令方法:
private ICommand _MyCommand;
public ICommand MyCommand
{
get { return _MyCommand ?? (_MyCommand = new DelegateCommand(a => MyCommandMethod(a))); }
}
private void MyCommandMethod(object item)
{
Console.WriteLine("Chosen element: " + (string)item);
}
答案 1 :(得分:0)
第1步:添加System.Windows.Interactivity
参考
第2步:在XAML xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
第3步:
<RadioButton Content="Boom" IsEnabled="{Binding IsChecked, Converter={StaticResource InverseBooleanConverter}, RelativeSource={RelativeSource Mode=Self}}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding MyCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>