wpf*_*pls 5 c# data-binding wpf binding
我目前正在将一个列表视图绑定到一个对象列表,并且一切正常。
只要我放入我的 Window 元素,我就可以很好地绑定到 xaml 后面的代码 DataContext="{Binding RelativeSource={RelativeSource Self}}"
我的 ListView 看起来像这样,并且我的绑定列与 MyCollection 项目的属性的绑定正常工作。
<ListView ItemsSource="{Binding MyCollection}">
Run Code Online (Sandbox Code Playgroud)
对于其中一个专栏,尽管我总是希望它说同样的话。例如,此列将始终包含“Hello World”
以下代码给了我一个绑定错误:
<GridViewColumn Header="I want all fields to be Hello World" DisplayMemberBinding="{Binding Source={x:Static Member=MyNamespace.MyStaticClass},Path=MyStaticStringField}" />
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误 MC3050:找不到类型“MyNamespace”。请注意,类型名称区分大小写。
MyNamespace 与窗口本身具有相同的命名空间,并且 MyStaticClass 是公共的
如果我尝试:
<GridViewColumn Header="I want all fields to be Hello World" DisplayMemberBinding="{Binding Source={x:Static Member=MyStaticClass},Path=MyStaticStringField}" />
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误 MC3029:“MyStaticClass”成员无效,因为它没有合格的类型名称。
奇怪的是,当我这样做时,它起作用了:
<GridViewColumn Header="This works" DisplayMemberBinding="{Binding Source={x:Static Member=SystemFonts.IconFontFamily}, Path=Source}" />
Run Code Online (Sandbox Code Playgroud)
我试图绑定到的字段的代码:
namespace MyNamespace
{
public static class MyStaticClass
{
public static string MyStaticStringField{ get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
有了x:Static
你需要指定一个静态字段或属性(不只是类)的路径。
<GridViewColumn Header="I want all fields to be Hello World" DisplayMemberBinding="{Binding Source={x:Static MyNamespace:MyStaticClass.MyStaticStringField}}" />
Run Code Online (Sandbox Code Playgroud)
另请注意,命名空间与类名用冒号(不是点)分隔。