我正在尝试制作动态单选按钮,我想在单选按钮更改事件中显示一个带有所选项目的消息框。我不太了解如何使用MVVM模式创建新的事件处理程序,也无法使用PropertyChangedEventHandler
。
这是我的代码
XAML
<StackPanel Grid.Row="2">
<TextBlock Text="Select a Salad"
FontSize="18"
Margin="5" />
<ItemsControl ItemsSource="{Binding Salads}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton GroupName="Salads"
Content="{Binding ItemDescription}"
IsChecked="{Binding IsSelected}"
Margin="5,1"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
查看模型
public class MainWindowViewModel : INotifyPropertyChanged
{
public MainWindowViewModel()
{
Salads = new Collection<SelectableItem>
{
new SelectableItem { ItemDescription = "Kale Avocado", Id = 1},
new SelectableItem { ItemDescription = "Caesar", Id = 2 },
new SelectableItem { ItemDescription = "Arugula with Goat Cheese", Id = 3, IsSelected = true},
new SelectableItem { ItemDescription = "Garden", Id = 4}
};
}
// Salads
public Collection<SelectableItem> Salads { get; set; }
public SelectableItem SelectedSalad
{
get { return Salads.FirstOrDefault(s => s.IsSelected); }
}
// Property Changed
public event PropertyChangedEventHandler PropertyChanged;
}
SelectableItem类
public class SelectableItem : INotifyPropertyChanged
{
public string ItemDescription { get; set; }
public bool IsSelected { get; set; }
public int Id { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
答案 0 :(得分:1)
您通常使用命令来处理MVVM应用程序中的事件。请参阅this博客文章,以获取有关此信息的更多信息。
一旦您向显示SelectableItem
的{{1}}类添加了命令,就可以将MessageBox
的{{1}}属性绑定到该源属性:>
Command
当您选中或取消选中RadioButton
时,将调用该命令。
答案 1 :(得分:0)
PropertyChanged可以这样使用
PropertyChanged += delegate(string propertyName)
{
if(propertyName == "IsSelected")
{
// Do something
}
};