[英]WPF Binding Treeview element to a UserControl
我有一個使用 Model 視圖架構的樹視圖,每個 TreeViewItem 都有一個 windows 表單屬性,當我單擊一個節點時,我希望應用程序在樹的右側顯示與該節點關聯的表單。
如何使用綁定來實現這一點我嘗試了以下方法,但與 ApplicationForms 關聯的用戶控件沒有顯示。
<ContentControl Margin="163,5,127,5" Content="{Binding SelectedItem,ElementName=ApplicationTree}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type local:ApplicationViewModel}">
<StackPanel>
<TextBlock Text="Displaying an A!" />
<ContentPresenter Name="MyContent">
<ContentPresenter.Content>
<UserControl x:Name="UserCntrl2" HorizontalAlignment="Stretch" Height="Auto" Width="Auto" Content="{Binding ApplicationForms}"/>
</ContentPresenter.Content>
</ContentPresenter>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type local:ApplicationsViewModel}">
<StackPanel>
<TextBlock Text="Displaying a B!" />
<!--<TextBlock Text="{Binding Bar}" />-->
</StackPanel>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
由於您使用的是 MVVM,因此您可以交替地將這種邏輯放在 model 視圖中。 然后,您可以將樹節點的 IsSelected 屬性綁定到您的視圖模型,然后當 wpf 將 IsSelected 設置為 true 時(當用戶選擇項目時),您可以做任何您想做的事情。
以這種方式使用視圖模型是一種非常有用的模式。 您的視圖模型可以引用各種東西並根據選擇或擴展影響它們。 您也可以 go 反過來,讓代碼影響視圖模型並讓數據綁定更新實際控件
如果您正在使用樹視圖,您還應該查看HierarchicalDataTemplate
-編輯-
正確閱讀問題后,我發現您已經在做正確的事情,即將您的主控件綁定到 Treeview 的SelectedItem 。 我確實相信 SelectedItem 屬性指向 TreeViewItem,而不是實際的 VM。 也許這就是問題所在?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.