Wpf 从代码中获取自定义MarkupExtension
是否有任何方法可以从代码隐藏中访问自定义MarkupExtension?例如Wpf 从代码中获取自定义MarkupExtension,wpf,Wpf,是否有任何方法可以从代码隐藏中访问自定义MarkupExtension?例如 <TextBox Name="text" Text="{my:CustomExtension}" /> 我希望能够访问“CustomExtension”实例 我已经创建了自己的轻量级绑定,但这是解决方案中唯一真正的差距。如果我从代码中设置上述内容,那么我可以将CustomExtension实例保留在附加属性中,但在上述情况下,XAML解析器不会这样做。标记扩展在需要属性时被“解析”,在那一刻,它们将被
<TextBox Name="text" Text="{my:CustomExtension}" />
我希望能够访问“CustomExtension”实例
我已经创建了自己的轻量级绑定,但这是解决方案中唯一真正的差距。如果我从代码中设置上述内容,那么我可以将CustomExtension实例保留在附加属性中,但在上述情况下,XAML解析器不会这样做。标记扩展在需要属性时被“解析”,在那一刻,它们将被它们通过
ProvideValue
提供的值替换。除非您向传递它的MarkupExtension
添加一些内容,否则您可能无法获得实例。感谢您的回复。你说它们被它们提供的价值所取代是什么意思?是不是(在上面的示例中)TextBox没有对CustomExtension的引用,但CustomExtension可能在ProvideValue()调用后缓存了对TextBox的引用(用于持续更新)?因此,TextBox保存ProvideValue()提供的值,它与任何对CustomExtension的引用(我相信它从未有过)完全独立。有什么想法可以添加到MarkupExtension来传递吗?:)@Fil:您的扩展是否继承自绑定
?在这种情况下,它将有点不同,并且将在绑定对象上设置绑定表达式。在这种情况下,可以使用文本属性上的。表达式的ParentBinding
可能包含(装箱的)CustomExtension
。