使用MVVM模式

时间:2015-09-20 10:40:55

标签: c# wpf mvvm

我想知道是否可以在viewModel中有一个ObservableCollection的ObservableCollection:

 ObservableCollection<ObservableCollection<EditingMetadataViewModel>> MetadatasList = new ObservableCollection<ObservableCollection<EditingMetadataViewModel>>();

每个ObservableCollection在绑定到视图时显示元数据列表。如果我选择了多个文件,我希望拥有与所选文件编号相同的元数据列表编号(例如,如果我选择三个文件并且我想编辑他们的元数据,我想要有三个元数据列表列表)。 / p>

2 个答案:

答案 0 :(得分:0)

是的,您可以创建ListView,ListBox,Grid,...作为子项的ItemsControl(或Panel控件):

<ItemsControl ItemsSource="{Binding MetadatasList}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <ListView ItemsSource="{Binding}">
        <ListView.ItemTemplate>
          <DataTemplate>
            <TextBox Text="{Binding MetaData}" />
          </DataTemplate>
        </ListView.ItemTemplate>
      </ListView>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

答案 1 :(得分:0)

我不明白为什么不这样,并且很容易验证这一点。您可以快速创建一个ListBox,其中包含一个包含ListBox的数据模板。

为清楚起见,您可能希望定义一个类FileMetadata。在这种情况下,第一个可观察的集合将被声明为
    public ObservableCollection<FileMetadata> FileMetadataList {get; private set; }

班级FileMetadata将包含成员:​​
    public ObservableCollection<EditingMetadataViewModel>> MetadatasList {get; private set; }

这与您的代码相同,但可能会使某些部分更易于阅读和管理。