【发布时间】:2011-11-18 14:27:44
【问题描述】:
由于UIElement 没有DataContext 的属性,我如何获得UIElement 的DataContext?
【问题讨论】:
标签: silverlight silverlight-4.0 uielement
由于UIElement 没有DataContext 的属性,我如何获得UIElement 的DataContext?
【问题讨论】:
标签: silverlight silverlight-4.0 uielement
DataContext 属性被引入到FrameworkElement 中的继承层次结构中。
因为FrameworkElement 继承自UIElement,您必须确保UIElement 实际上是FrameworkElement:
if(uiElement is FrameworkElement frameworkElement)
{
var dc = frameworkElement.DataContext;
}
【讨论】:
您应该能够将UIElement 转换为FrameworkElement,然后访问DataContext 属性。
【讨论】:
UIElement 派生来创建自定义 UI 元素是完全合法的,如果您想要更轻量的控件和/或不需要或不想要 @ 的额外布局和数据处理功能,这甚至可能是首选987654325@。由于不能排除非 FE 控件的存在,考虑到 OP 提供的信息很少,“将 UIElement 转换为 FrameworkElement”似乎是不可靠的建议。