2013-01-03 85 views
1

這裏的情況: Data Context的窗口是:MainViewModelMVVM解決方案爲wpf

它從ObservableCollectionsSubViewModel. 的每個SubViewModel內置有型String.

的自己ObservableCollection現在,我有一個TreeView。 ItemsSource是MainViewModelObservableCollection(表示它是SubViewModel集合)。

我想,如果一個項目被選中,那麼將顯示ObservableCollection(String類型)的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> 

我已經和很多掙扎,我如何能實現我的目標?

回答

1

將樹狀圖ItemsSource綁定到UserListSelectedItem

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

假設在UserList的項目是SubViewModel其具有IEnumerable<T>屬性稱爲SubViewModelCollection類型。

+0

Ehm,它不工作,我現在甚至沒有看到TreeView。這裏是我的代碼:http://pastebin.com/d3Fc0aNZ – idish

+0

UserList中的Items是SubViewModel中的ObservableCollection。 – idish

+0

嗯,有什麼想法? – idish

0

我建議看看Prism,特別是portion pertaining to Event Aggregation。當您選擇TreeView中的某個項目時,您可以在應用程序中發佈一個事件,並在應用程序中的其他位置使用該事件,並將ItemControl綁定到所選的SubViewModel,而不必在這兩個塊之間引入任何不必要的耦合的應用程序。

+0

一個例子會很好:) – idish

+0

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/10/27/棱鏡和Silverlight的截屏上溝道9.aspx –