WPF将树视图绑定到UserControl
我有一个使用模型视图体系结构的树视图,每个TreeViewItem都有一个windows窗体属性,当我单击一个节点时,我希望应用程序显示与该节点关联的窗体树的右侧。WPF将树视图绑定到UserControl
如何使用绑定来实现此功能我尝试了以下方法,但与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属性绑定到您的视图模型,然后当IsSelected通过wpf设置为true时(当使用该选项时),您可以执行任何您想要的操作。
以这种方式使用视图模型是非常有用的模式。您的视图模型可以引用各种东西,并根据选择或扩展来影响它们。你也可以去周围的其他方法,并有一些代码影响的ViewModels,让数据绑定更新实际控制
Here is a pretty good article on MVVM and treeview
您也应该检查HierarchicalDataTemplate,如果你与树视图
工作 - 编辑-
正确阅读问题后,我看到你已经在做正确的事情,那就是将你的主控制绑定到树形视图的SelectedItem。虽然我相信SelectedItem属性指向TreeViewItem,但不是实际的VM。也许这就是问题所在?
我想你可能错过了那里的观点。 – 2011-05-05 14:19:41
也许:)我得到的印象OP想要显示树视图旁边的内容,在主 - 明细情况下。 – aL3891 2011-05-05 14:25:20
是的,但我认为主人完成了,这只是关于细节。 – 2011-05-05 14:33:13
看起来很好,我有任何绑定错误? – 2011-05-05 14:20:15
(在Visual Studio的输出窗口中发现绑定错误) – 2011-05-05 15:51:01
我不是100%确定的,但我认为我试图显示WindowsForm的事实可能是应该托管在WindowsFormsHost中的问题。但是,似乎windows窗体控件不支持绑定,所以我将被迫让ApplicationsViewModel直接调用顶层应用程序。 – Jon 2011-05-05 16:45:22