c# - 如何访问动态添加的 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的视图模型,那也是最受欢迎的。
提前致谢!
解决方案
ContentControl
在MainWindow
an中给出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;
推荐阅读
- c++ - macOS 使用 CMake 构建通用二进制 2
- javascript - 出现时获取元素
- django - Django ModelMultipleChoiceField 项目符号样式
- java - 我应该在哪里将静态数据存储在 android 中以最快地读取?
- css - 通过css在离子标题的阴影根中选择“工具栏标题”
- circleci - CircleCi:如何禁用自动触发?
- postgresql - 有没有办法在函数内为“table.column”类型的查询起别名?
- java - java的本机内存跟踪输出的“其他”部分包含什么?
- c# - WPF FileLoadException:无法加载文件或程序集。需要强命名程序集
- python - 我如何向模型指定将什么作为自定义损失函数的输入?