从WPF自定义MarkupExtension访问“当前类”

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

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

这是可能吗?

在.NET 4.0中,他们添加了IRootObjectProviderfunction,但不幸的是,它在以前的版本中是不可能的。 如果您使用的是.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 }