我有一个内部具有ListViews的ItemsControl,以创建自定义网格,如布局 代码大致如下所示,更改了名称并删除了不相关的样式。
每个ListView是由ItemsSubList的一个实例创建的,因此没有设置数量的列表框或属性。
有人知道如何将每个列表框的SelectedItem属性以某种方式绑定到一个列表中吗?
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ListView ItemsSource="{Binding ItemsSubList}"
DisplayMemberPath="ItemVersion"
SelectionMode="Single"
Width="100"
VerticalAlignment="Top"
Background="#282828"
BorderBrush="#282828">
</ListView>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
答案 0 :(得分:1)
我会在您的模型中解决它。
您的数据上下文似乎是具有类型Items
的属性ObservableCollection<MyItem>
和类MyItem
的类,然后是类型ItemsSubList
的属性ObservableCollection<MySubItem>
。是吗?
ListView的数据上下文是MyItem类型的实例。您可以将属性SelectedSubItem
添加到类MyItem
中,并通过双向绑定将其绑定到列表框。SelectedItem。
然后在保存模型的主类中,以及属性Items
所在的位置,我将添加一个属性
public List<MySubItem> SelectedSubItems => Items.Select(i => i.SelectedSubItem).ToList();
,该属性可从所有项目中动态选择所有选定的子项目。