双向集合绑定

Two-Way Collection binding

我有一个 table 带有绑定到 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"/>

我的视图模型属性

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

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

view of table

如何将集合数据更改传递给视图模型?

您需要声明一个新的 class,它将成为 属性 类型 book 和适当的 RaisePropertyChanged 调用的复选框的视图模型。并且 MyCollection 必须是 class 而不是 bool

的实例集合的集合
public class CheckboxViewModel
{
   private bool _checkboxValue;

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

确保你在复选框视图中有双向绑定 属性

顺便说一句 - MyCollection 的 setter 处的 RaisePropertyChanged 在您的示例中引发了错误 属性 名称的事件。