1

这里的情况: Data Context窗口是:MainViewModel

它是由 每个都有自己的类型构建ObservableCollectionsSubViewModel.SubViewModelObservableCollectionString.

现在,我有一个树视图。ItemsSource 是ObservableCollection. MainViewModel(意味着它是SubViewModel集合)。

我希望如果选择了一个项目,那么将ObservableCollection显示selected Item in the treeview.

我怎样才能做到这一点?

一些代码:

<TreeView ItemTemplate="{DynamicResource TreeViewDataTemplate}" ItemsSource="{Binding SubViewModelCollection}"/>

由于某些原因,我想在堆栈面板中显示该集合。所以:(TypeCollection 是该项目的字符串 ObservableCollection,它目前当然不起作用)

 <ItemsControl ItemsSource="{Binding TypeCollection}" x:Name="UserList" ItemTemplate="{StaticResource TemplateDataTemplate}" >
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Column="1"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>

我一直在为此苦苦挣扎,我怎样才能实现我的目标?

4

2 回答 2

1

将树视图绑定ItemsSourceUserList's SelectedItem

<TreeView ItemTemplate="{DynamicResource TreeViewDataTemplate}"
  ItemsSource="{Binding ElementName=UserList Path=SelectedItem.SubViewModelCollection}"/>

假设其中的项目是具有名为 的属性UserList的类型。SubViewModelIEnumerable<T>SubViewModelCollection

于 2013-01-03T19:39:28.350 回答
0

我建议看一下Prism,尤其是与 Event Aggregation 相关的部分。这将允许您在选择 TreeView 中的项目时在应用程序中发布事件,在应用程序的其他地方使用该事件并将 ItemControl 绑定到所选的 SubViewModel ,而无需在这两部分之间引入任何不必要的耦合您的应用程序。

于 2013-01-03T19:47:53.983 回答