我想知道是否可以在viewModel中有一个ObservableCollection的ObservableCollection:
ObservableCollection<ObservableCollection<EditingMetadataViewModel>> MetadatasList = new ObservableCollection<ObservableCollection<EditingMetadataViewModel>>();
每个ObservableCollection在绑定到视图时显示元数据列表。如果我选择了多个文件,我希望拥有与所选文件编号相同的元数据列表编号(例如,如果我选择三个文件并且我想编辑他们的元数据,我想要有三个元数据列表列表)。 / p>
答案 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; }
这与您的代码相同,但可能会使某些部分更易于阅读和管理。