C# 如何使用MVVM模式添加单选按钮更改事件?

C# 如何使用MVVM模式添加单选按钮更改事件?,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我正在尝试创建动态单选按钮,我想在单选按钮更改事件中显示一个包含所选项目的消息框。我真的不知道如何用MVVM模式创建新的事件处理程序,也不知道如何使用PropertyChangedEventHandler 这是我的密码 XAML PropertyChanged可以这样使用 PropertyChanged += delegate(string propertyName) { if(propertyName == "IsSelected") { // Do somet

我正在尝试创建动态单选按钮,我想在单选按钮更改事件中显示一个包含所选项目的消息框。我真的不知道如何用MVVM模式创建新的事件处理程序,也不知道如何使用
PropertyChangedEventHandler

这是我的密码

XAML


PropertyChanged可以这样使用

PropertyChanged += delegate(string propertyName)
{
    if(propertyName == "IsSelected")
    {
        // Do something
    }
};

您通常使用命令来处理MVVM应用程序中的事件。有关这方面的更多信息,请参阅博客文章

将命令添加到显示
消息框的
SelectableItem
类后,可以将
单选按钮的
命令
属性绑定到此源属性:

<RadioButton GroupName="Salads"
        Content="{Binding ItemDescription}"
        IsChecked="{Binding IsSelected}"
        Command="{Binding YourCommand}"
        Margin="5,1"/>


当您选中或取消选中
单选按钮时,将调用该命令

可能重复使用列表框而不是项控件:列表框具有开箱即用的选择支持将
ICommand
属性添加到
SelectableItem
并将
单选按钮的command属性绑定到此属性。例如在MainWindowViewModel()的构造函数或窗口/用户控件的构造函数中(DataContext.OnPropertyChanged+=…)
public class SelectableItem : INotifyPropertyChanged
{
    public string ItemDescription { get; set; }

    public bool IsSelected { get; set; }

    public int Id { get; set; }

    public event PropertyChangedEventHandler PropertyChanged;
}
PropertyChanged += delegate(string propertyName)
{
    if(propertyName == "IsSelected")
    {
        // Do something
    }
};
<RadioButton GroupName="Salads"
        Content="{Binding ItemDescription}"
        IsChecked="{Binding IsSelected}"
        Command="{Binding YourCommand}"
        Margin="5,1"/>