wpf - 如何更改绑定到可观察集合的列表框中特定项目的属性?
问题描述
我有一个打印机型号:
public class Printer: BindableBase
{
private bool isDefault = false;
public string Name { get; set; }
public bool IsDefault
{
get { return isDefault; }
set { SetProperty(ref isDefault, value); }
}
}
和打印机视图模型:
public class PrinterViewModel: BindableBase
{
public ObservableCollection<Printer> Printers { get; set; }
public PrinterViewModel()
{
Printers = new ObservableCollection<Printer>();
LoadPrinters();
}
public void LoadPrinters()
{
Printers.Add(new Printer { Name = "HP" });
Printers.Add(new Printer { Name = "Sony" });
Printers.Add(new Printer { Name = "Samsung" });
Printers.Add(new Printer { Name = "LG" });
Printers.Add(new Printer { Name = "Toshiba" });
}
}
和一个带有 Itemtemplate 的列表框,因此每个项目在 TextBlock 和一个按钮中显示其名称以更改该项目的“IsDefault”属性:
<ListBox ItemsSource="{Binding Printers }">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<Button x:Name="SetDefault" Content="Set as Default"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在,我想在单击“SetDefault”按钮时将任何项目的“IsDefault”属性更改为所有其他项目的“true”和“false”。我怎样才能做到这一点?
提前谢谢任何帮助。
解决方案
推荐阅读
- twitter-bootstrap - 使用引导程序内联两个元素
- javascript - 需要视频在按键时静音/取消静音(无按钮)
- ruby-on-rails-5 - Has_many :通过使用 3 个模型的关联
- environment-variables - 使用 CLion,如何为 cmake 构建设置环境变量?
- vuetify.js - 使用 VueCLI 3 编译手写笔
- python-3.x - 使用 spacy 生成文本特征会消耗太多时间
- php - 如何滚动到硒中的特定元素?
- java - 为什么我的可运行接口循环我的队列在这里继续
- android - dx.jar “忽略匿名内部类的 InnerClasses 属性”
- laravel - Laravel 和 Vue 身份验证表单在登录失败时重新加载