我目前正在将列表视图绑定到对象列表,并且每个人都在工作。
只要我放入我的Window元素DataContext="{Binding RelativeSource={RelativeSource Self}}"
我的ListView看起来像这样,绑定对我的绑定列正常工作到MyCollection项的属性。
<ListView ItemsSource="{Binding MyCollection}">
对于其中一个专栏,我总是希望它说同样的话。例如,此列将始终包含“Hello World”
以下代码给出了绑定错误:
<GridViewColumn Header="I want all fields to be Hello World" DisplayMemberBinding="{Binding Source={x:Static Member=MyNamespace.MyStaticClass},Path=MyStaticStringField}" />
我收到错误:
错误MC3050:找不到类型“MyNamespace”。请注意,类型名称区分大小写。
MyNamespace与窗口本身相同,MyStaticClass是公共
如果我改为尝试:
<GridViewColumn Header="I want all fields to be Hello World" DisplayMemberBinding="{Binding Source={x:Static Member=MyStaticClass},Path=MyStaticStringField}" />
我收到错误:
错误MC3029:'MyStaticClass'成员无效,因为它没有合格的类型名称。
奇怪的是,当我这样做时,它可以工作:
<GridViewColumn Header="This works" DisplayMemberBinding="{Binding Source={x:Static Member=SystemFonts.IconFontFamily}, Path=Source}" />
我要绑定的字段的代码:
namespace MyNamespace
{
public static class MyStaticClass
{
public static string MyStaticStringField{ get; set; }
}
}
答案 0 :(得分:4)
我认为你必须包含命名空间
xmlns:local="clr-namespace:MyNamespace"
然后像这样使用它:
{x:Static Member=local:MyStaticClass}
答案 1 :(得分:4)
使用x:Static
,您需要指定静态字段或属性的路径(而不仅仅是类)。
<GridViewColumn Header="I want all fields to be Hello World" DisplayMemberBinding="{Binding Source={x:Static MyNamespace:MyStaticClass.MyStaticStringField}}" />
另请注意,命名空间与冒号(不是点)的类名分开。
答案 2 :(得分:2)
您不能直接绑定到包含命名空间的类
在Page或Window或Usercontrol声明中设置NameSpace 的xmlns:myNameSpace对象= “pathtoyournamespace”
并在绑定中引用它:{x:Static mynamespace:MyStaticClass},Path ....
答案 3 :(得分:0)
同时添加到其他答案x:static
应该绑定到静态类 MEMBER ,而不是类本身。