在wpf中使用复合集合获取所选项目

时间:2013-08-30 11:22:08

标签: .net wpf mvvm binding compositecollection

我正在尝试将列表框的itemsSource设置为compositecollection。

<ListBox x:Name="moduleMenu" SelectedItem="{Binding SelectedSourceViewDetail}">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Horizontal"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>

                        <ListBox.ItemsSource>
                            <CompositeCollection>
                                <ListBoxItem DataContext="{Binding SourceModule.Settings}" Content="{Binding Name}"/>
                                <CollectionContainer Collection="{Binding SourceModule.ExtraViews}" />
                            </CompositeCollection>
                        </ListBox.ItemsSource>
                    </ListBox>

然而,与selectedItem的绑定不起作用。当项目被选中时,如何在viewmodel中获取所选项目?

1 个答案:

答案 0 :(得分:0)

而不是像在xaml中那样设置ItemsSource。我建议你使用convert返回CompositeCollection并将该集合绑定到ItemsSource。 CompositeCollection将是Settings和ExtraViews的集合

您的绑定看起来像ItemsSource = "{Binding SourceModel, Converter={StaticResource myConverter}}"。在Convert方法中,从sourcemodel.Settings和sourcemodel.ExtraViews创建复合集合并返回。

由于