10

我正在尝试编写一个自定义MarkupExtension,通过为我提供一种在 XAML 中指定绑定的更好方法来让我的生活更轻松。但是我想知道是否有任何方法可以访问代表所MarkupExtension使用文件的对象。

换句话说,假设我有一个UserControl定义我的程序的数据模型的特定再现。这个控件有很多视觉的东西,比如网格、边框和总体布局。如果我MarkupExtension在 this 中的某个元素的特定属性上使用 my UserControl,我想访问 的实例UserControl,而不知道它是什么类型(我打算使用反射)。

这是可能吗?

4

1 回答 1

16

在 .NET 4.0 中,他们添加了IRootObjectProvider功能,但不幸的是,在以前的版本中这是不可能的。如果您使用的是 .NET 4.0,则可以执行以下操作:

public override object ProvideValue(IServiceProvider serviceProvider)
{
    var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider;
    var root = rootObjectProvider.RootObject;
    // do whatever you need to do here
}
于 2010-06-15T17:46:44.007 回答