首页 > 解决方案 > 如何访问动态添加的 UserControl 的视图模型

问题描述

场景是这样的,我有一个MainWindow.xaml,作为这个窗口的一部分,我将加载一个 UserControl。这个 UserControl 实际上是在其他一些项目中,它被添加到 ResourceDictionary 中,键如下:

<ContentControl x:Key="Template1">
    <customcontrol:Template1UserControl/>
</ContentControl>

因此,在MainWindow.xaml中,我将按如下方式引用此键,

<ContentControl Content="{StaticResource Template1}"/>

现在,像这样我可以在MainWindow.xaml中看到Template1UserControl,但问题是我不知道如何访问MainWindow.xaml中Template1UserControl的数据上下文。

Template1就像一个变量,它明天可以有Template2UserControl,它可以是任何东西。

谁能帮我在WPF中做到这一点。如果我应该在这里应用一些其他策略来访问Template1UserControl的视图模型,那也是最受欢迎的。

提前致谢!

标签: c#.netwpfxaml

解决方案


ContentControlMainWindowan中给出x:Name

<ContentControl x:Name="cc" Content="{StaticResource Template1}"/>

...并尝试转换属性:

var theTemplate = cc.Content as ContentControl;
var theUserControl = theTemplate?.Content as UserControl;
var theDataContext = theUserControl?.DataContext;

推荐阅读