2009-12-13 43 views
3

我有一個包含TreeView控件的用戶控件。我正在使用MVVM模式。 我想在不同的窗口中重用此用戶控件,每次將usercontrol綁定到不同的數據上下文。綁定WPF TreeView與通用視圖模型

<UserControl Name="UserControl1".......> 

     .............. 

     <TreeView ItemSource={Binding ...}...> 


      <HierarchicalDataTemplate...........\> 

     </TreeView> 

     .............. 

    </UserControl> 

在窗口1中,我想將List<ObjectA>綁定到TreeView。

在Window 2中,我想將List<ObjectB>綁定到TreeView。

是否有可能爲這個usercontrol編寫一個通用的ViewModel,以便我可以將不同類型的數據綁定到TreeView? 如果我的問題沒有被理解,請讓我知道。

回答

2

如果我正確地讀這篇文章,你有你想重用,並設置其DataContext的是不同的視圖模型的在應用程序的不同部分用戶控件...

既如此,是的,你當然可以指定不同類型,爲您的TreeView的ItemsSource時的名單,但:

  • 列表屬性必須每個視圖模型內統一進行命名
  • 你需要描述一個DataTemplate(或HierarchicalDataTemplate)爲您希望通過每個類型進入喲內的TreeView烏爾控制的XAML
  • 您可能會發現綁定到ObservableCollection<T>List<T>帶來了更大的獎勵,如果你想從集合添加/刪除項目/並希望看到這些變化體現在UI

希望這有助於:)