如何在mvvm模式中正确使用单选按钮检查事件?



当一个特定的单选按钮被选中/点击时,我想在一个特定的文本块中为每个这些单选按钮编写一些特定的文本。我如何按照MVVM模式做到这一点?

在我的主视图模型中,我有以下代码…

public ICommand MyCommand { get; set; }
private string _txt;
public string Txt
{
get
{
return _txt;
}
set
{
_txt = value;
OnPropertyChanged("Txt");
}
}
private bool canexecutemethod(object parameter)
{
if (parameter != null)
{
return true;
}
else
{
return false;
}
}
private void executemethod(object parameter)
{
//what to do here;
}
public MainViewModel()
{
MyCommand = new RelayCommand(executemethod);
}

同样在xaml:

<RadioButton VerticalAlignment="Center" Margin="15" Content="Name" Command="{Binding MyCommand}"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="Age" Command="{Binding MyCommand}"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="DOB" Command="{Binding MyCommand}"/>
<TextBlock Margin="5" Height="30" Width="150" Foreground="Red" Text="{Binding Txt, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>

当第一个单选按钮被选中时,文本块文本应该显示一些文本,如

请输入名称

,当第二个单选按钮被选中时,文本块文本应该显示一些文本,如

请输入有效的年龄/整数值

等等…

它可以在没有视图模型参与的情况下完成:

<RadioButton VerticalAlignment="Center" Margin="15" Content="Name" Name="chkName"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="Age"  Name="chkAge"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="DOB"  Name="chkDob"/>
<TextBlock Margin="5" Height="30" Width="150" Foreground="Red">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=chkName,Path=IsChecked}" Value="True">
<Setter Property="Text" Value="Please enter a name"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=chkAge,Path=IsChecked}" Value="True">
<Setter Property="Text" Value="Please enter a valid age/integer value"/>
</DataTrigger> 
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>

最新更新