上下文
我有一个复杂的WPF应用程序,我正在构建一个工具系统,旨在清理XAML文件,确保它们尊重样式和本地化的业务规则。为了做到这一点,我正在加载适当的依赖项。
Assembly.LoadFrom(Path.Combine(assemblieLocation, "SomeAssembly" + ".dll"));
加载后,我通过反射创建适当的实例
(UIElement)Activator.CreateInstance(typeToInstantiate, true);
问题
我面临的问题是,我必须能够从一个网站上阅读内容
attached property
.在我现在所在的上下文中,WPF应用程序使用TextBlock的文本属性或内部定义的自定义依赖属性。知道依赖项属性必须定义Get/Set对才能访问属性的内容,并确保CLR可以确保自定义属性和直接来自的属性之间存在差异。NET或lib,这是我遵循的方法。
if(uiElemetInstance is TextBlock tBlock && !string.IsNullOrEmpty(CustomClass.GetText(tBlock))
我在这里遇到的问题是在运行时,即使在XAML文件中,文本是用一个值定义的,我的系统可以毫无问题地实例化TextBlock,但看不到文本属性的内容;它仍然是一个空字符串,我不明白为什么会这样。
可重复的步骤
必需元素
-
1个控制台应用程序
-
1个WPF应用程序
-
1个XAML文件
-
定义一个自定义类,该类将定义attach属性(在WPF项目中定义)
-
在控制台应用程序中使用反射加载WPF项目
-
从控制台应用程序中读取附加属性内容
这里有一个链接到我的
gist
包含此问题的所有要求。