Двусторонняя коллекция переплетов - PullRequest
0 голосов
/ 17 октября 2019

У меня есть таблица с флажками, которая привязана к коллекции ObservableCollection>, я хочу отслеживать изменения в этой коллекции, когда один из флажков изменяет мое представление.

Это мой код:

<UserControl.Resources>
<DataTemplate x:Key="DataTemplate_Level2">
  <CheckBox IsChecked="{Binding Path=. ,Mode=TwoWay}" Height="40" Width="50" Margin="4,4,4,4"/>
</DataTemplate>
<DataTemplate x:Key="DataTemplate_Level1">
  <ItemsControl x:Name="2st" Items="{Binding Path=. ,Mode=TwoWay}" ItemTemplate="{DynamicResource DataTemplate_Level2}">
    <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"/>
      </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
  </ItemsControl>
</DataTemplate>
</UserControl.Resources>
<ItemsControl Grid.Column="1" Items="{Binding MyCollection, Mode=TwoWay}" x:Name="lst" ItemTemplate="{DynamicResource DataTemplate_Level1}" Background="Gold"/>

Мое свойство viewModel

public ObservableCollection<ObservableCollection<bool>> MyCollection
{
        get
        {
            return someCollection;
        }

        set
        {
            someCollection = value;
            RaisePropertyChanged(nameof(MyCollection));
        }
 }

представление таблицы

Как передать изменения данных коллекции в модель представления?

1 Ответ

0 голосов
/ 17 октября 2019

Вам необходимо объявить новый класс, который станет viewmodel для флажка со свойством типа book и соответствующим вызовом RaisePropertyChanged. И MyCollection должна быть коллекцией коллекций экземпляров этого класса, а не bool

public class CheckboxViewModel
{
   private bool _checkboxValue;

   public bool CheckboxValue
   {
      get
      {
         return _checkboxValue;
      }
      set
      {
         _checkboxValue = value;
         RaisePropertyChanged(nameof(CheckboxValue));
      }
   }
}

. Убедитесь, что в представлении флажка есть двусторонняя привязка к этому свойству

BTW - RaisePropertyChanged в установщикеMyCollection вызывает событие с неправильным именем свойства в вашем примере.

...