C# WPF将Treeview元素绑定到UserControl

C# WPF将Treeview元素绑定到UserControl,c#,wpf,xaml,treeview,C#,Wpf,Xaml,Treeview,我有一个使用模型视图体系结构的树视图,每个树视图项都有一个windows窗体属性,当我单击某个节点时,我希望应用程序在树的右侧显示与该节点关联的窗体 如何使用绑定实现这一点我已经尝试了以下方法,但是没有显示与ApplicationForms关联的用户控件 <ContentControl Margin="163,5,127,5" Content="{Binding SelectedItem,ElementName=ApplicationTree}"> <C

我有一个使用模型视图体系结构的树视图,每个树视图项都有一个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,所以您可以在视图模型中交替放置这种逻辑。然后,您可以将树节点的IsSelected属性绑定到viewmodel,然后当IsSelected被wpf设置为true时(当用户选择该项时),您可以做任何您想做的事情

以这种方式使用视图模型是非常有用的模式。您的viewmodels可以引用所有类型的内容,并根据选择或扩展来影响它们。您也可以反过来让代码影响viewmodels,并让数据绑定更新实际控件

如果您正在使用TreeView,还应该查看

-编辑-


在正确地阅读了这个问题之后,我发现您已经在做正确的事情,那就是将您的主控件绑定到Treeview的控件。但是我相信SelectedItem属性指向TreeViewItem,而不是实际的VM。也许这就是问题所在

看起来不错,有任何绑定错误吗?(在Visual Studio的输出窗口中发现绑定错误)我不是100%确定,但我认为我试图显示一个WindowsForm可能是问题所在,因为应该在WindowsFormsHost中托管。但是,windows窗体控件似乎不支持绑定,因此我将被迫让ApplicationsViewModel直接调用顶级应用程序。可能:)我得到的印象是,OP希望在一种主细节场景中显示树视图旁边的内容。是的,但主视图已经完成了,这只是关于细节。是的,对不起,我可能没有明确说明Treeview方面的工作是否正常。这是我无法展示的细节方面。我是WPF新手,不确定我是否应该尝试绑定到控件?嗯,你可能是对的,我没有将他的代码滚动到足够的右侧,但现在我看到他已经将其正确绑定到treeview。。正如您所说,这可能是一个绑定路径错误。