簡體   English   中英

WPF 將 Treeview 元素綁定到 UserControl

[英]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 反過來,讓代碼影響視圖模型並讓數據綁定更新實際控件

這是一篇關於 MVVM 和 treeview 的不錯的文章

如果您正在使用樹視圖,您還應該查看HierarchicalDataTemplate

-編輯-

正確閱讀問題后,我發現您已經在做正確的事情,即將您的主控件綁定到 Treeview 的SelectedItem 我確實相信 SelectedItem 屬性指向 TreeViewItem,而不是實際的 VM。 也許這就是問題所在?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM