我目前正在分别绑定我的单选按钮,换句话说,我每个按钮都有一个command
,一切正常,但是我想以某种方式只绑定一个命令。
这就是我所拥有的...
XAML:
<RadioButton x:Name="radioButton1"
Content="RadioButton1"
IsChecked="True"
Command="{Binding RadioButton1Command }"/>
<RadioButton x:Name="radioButton2"
Content="RadioButton2"
IsChecked="True"
Command="{Binding RadioButton2Command }"/>
ViewModel:
public RelayCommand RadioButton1Command { get; }
public RelayCommand RadioButton2Command { get; }
public MyClassConstructorViewModel()
{
RadioButton1Command = new RelayCommand(radioButton1Click);
RadioButton1Command = new RelayCommand(radioButton2Click);
}
private void radioButton1Click()
{
Console.WriteLine("Radio Button 1 Clicked...");
}
private void radioButton2Click()
{
Console.WriteLine("Radio Button 2 Clicked...");
}
是否可以将所有单选按钮绑定到单个RelayCommand
并能够做出相应响应?
谢谢!
答案 0 :(得分:1)
您可以绑定RadioButton
的名称。通过方法中收到的名称,您可以执行正确的操作。
XAML
<RadioButton x:Name="radioButton1"
Content="RadioButton1"
IsChecked="True"
Command="{Binding RadioButtonCommand }" CommandParameter="{Binding Path=Name, RelativeSource={RelativeSource Self}}"/>
<RadioButton x:Name="radioButton2"
Content="RadioButton2"
IsChecked="True"
Command="{Binding RadioButtonCommand }" CommandParameter="{Binding Path=Name, RelativeSource={RelativeSource Self}}"/>
ViewModel
public RelayCommand<string> RadioButtonCommand { get; }
public MyClassConstructorViewModel()
{
RadioButtonCommand = new RelayCommand<string>(radioButtonClick);
}
private void radioButtonClick(string name)
{
if(name == "radioButton1")
Console.WriteLine("Radio Button 1 Clicked...");
else if(name == "radioButton2")
Console.WriteLine("Radio Button 2 Clicked...");
}