在 MVVM / MVVM Light 中绑定单选按钮的正确方法是什么
What is the proper way to bind a radio button in MVVM / MVVM Light
我目前正在单独绑定我的单选按钮,换句话说,每个单选按钮都有一个 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
并能够做出相应的响应?
谢谢!
可以绑定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...");
}
我目前正在单独绑定我的单选按钮,换句话说,每个单选按钮都有一个 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
并能够做出相应的响应?
谢谢!
可以绑定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...");
}