我正在尝试编写一个自定义的MarkupExtension
,通过提供一种更好的方式来指定XAML中的绑定,从而使我的工作变得更容易。但是,我想知道是否有任何方法可以访问表示使用MarkupExtension
的文件的对象。
换句话说,假设我有一个UserControl
,它定义了我的程序的数据模型的特定呈现形式。这个控件有很多可视化的东西,比如网格、边框和总体布局。如果我在这个UserControl
中某个元素的特定属性上使用我的MarkupExtension
,我想访问UserControl
的实例,而不知道它是什么类型(我计划使用反射)。
这有可能吗?
发布于 2010-06-15 17:46:44
在.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
}
https://stackoverflow.com/questions/3047448
复制相似问题