【发布时间】:2011-09-28 16:57:03
【问题描述】:
我正在尝试从我的资源字典后面的代码中设置一个 ResourceDictionary DataContext。
我有一个使用自己的样式(资源字典)的数据模板,该样式包含一个具有自己样式的复选框:
<Style x:Key="CheckBoxStyle" TargetType="CheckBox">
<EventSetter Event="CheckBox.Checked" Handler="CheckBox_Checked"/>
<EventSetter Event="CheckBox.Unchecked" Handler="CheckBox_Unchecked"/>
</Style>
在 CheckBox_Checked 事件中,我想引用字典的父(用户控件)视图模型来执行函数,但是因为资源字典没有从控件事件内部设置 DataContext 的 DataContext 属性,如下所示:
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
MyViewModel viewModel = (MyViewModel)DataContext;
}
不起作用(当然)。
我想我需要获取 Ancestor(资源字典用户控件)的句柄,但不知道如何执行此操作 - 或者可能有其他方法..
谢谢
乔
【问题讨论】:
-
你为什么要这样做?发布一些示例代码,是吗?
-
这没有多大意义。当然,ResourceDictionaries 没有 DataContext,它们在任何方面都不是您不能使用 DataBinding 的控件。 ResourceDictionary 就像名字所说的,只是一个由 Key 标识的资源字典。可能令人困惑的是,UserControl 和 Windows 有一个 XAML 文件,您可能会将这些 XAML 与仅描述 ResourceDictionaries 的 XAML 混在一起。但它们完全不同。 XAML 并不意味着它是 ResourceDictionary。
标签: wpf xaml resourcedictionary