Items控制列表视图,从每个列表视图中绑定SelectedItem,其中列表视图的数量是动态的,MVVM



我有一个包含列表视图的 ItemsControl 来制作类似布局的自定义网格 大致以下是执行此操作的代码外观,更改了名称并删除了不相关的样式。

每个列表视图都是由 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>

我会在你的模型中解决它。 您的数据上下文似乎是一个具有ObservableCollection<MyItem>类型的属性Items的类,而您的类MyItem则作为类型为ObservableCollection<MySubItem>的属性ItemsSubList。是吗?

列表视图的数据上下文是 MyItem 类型的实例。可以将属性SelectedSubItem添加到类MyItem,并使用双向绑定将其绑定到列表框。选定项。

然后在您的主类中,它包含您的模型以及属性Items所在的位置,我会添加一个属性public List<MySubItem> SelectedSubItems => Items.Select(i => i.SelectedSubItem).ToList();,一个从所有项目中动态选择所有选定子项的属性。

最新更新