Как изменить свойство определенного элемента в списке, привязанном к наблюдаемой коллекции? - PullRequest
0 голосов
/ 06 июля 2019

У меня есть модель принтера:

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>

Теперь я хочу изменить свойство «IsDefault» любого элемента, когда для его кнопки «SetDefault» установлено значение «true» и «false» для всех других элементов. как я могу это сделать?

Спасибо заранее за любую помощь.

...