【发布时间】:2012-04-04 03:23:39
【问题描述】:
我遇到了一些将 WPF 绑定到静态属性的问题。在我的应用程序中有一个名为 Globals 的类,它包含 ThisAddIn 的 static 属性。这个对象允许我访问一个基本上是我想在绑定中使用的用户属性。所以,我的 XAML 看起来像这样:
<TextBlock Text="{Binding Path=User.Name
, Source={x:Static Member=s:Globals.ThisAddIn}}" />
命名空间 s 在顶部由以下行声明:
xmlns:s="clr-namespace:ConsoleApplication16.Model"
我发现了很多关于如何在 XAML 中引用静态属性的不同方法,但除了这个之外,它们都不起作用,这对我来说似乎也是最合乎逻辑的。我发现的一些样本根本没有使用 Path 或 Member。
经过一些测试,我找到了正确的方法,就是使用“x:Static Member”来定义你想要使用的类和静态属性,而 Path 在这个对象中定义了正确的属性,就像普通的一样绑定就可以了。
虽然此解决方案编译时没有任何问题,但会直接弹出 XAMLParseException 告诉我 StaticExtension 值无法解析为枚举、静态字段或静态属性。
【问题讨论】:
-
如果
right way抛出异常,它究竟是怎样的? -
此外,您应该能够删除
Path=和Member=,因为这将调用设置相关属性的相应构造函数。 -
我通常使用
{Binding Source={x:Static local:MyStaticClass.SomeStaticProperty.PropertyName}绑定到静态类/属性。请确保您的物业有get/set评估员。例如,一定要使用public string PropertyName { get; set; }而不是public string PropertyName; -
@Rachel:这肯定行不通,因为
x:Static有一个固定的语法ns:Class.Property。 -
@H.B.你是对的,我不知道为什么我把
PropertyName放在那里。{Binding PropertyName, Source={x:Static local:MyStaticClass.SomeStaticProperty}
标签: wpf xaml data-binding static xamlparseexception