代码之家  ›  专栏  ›  技术社区  ›  Adam Ness

为什么我不能绑定到WPF中类的字段而不是绑定到属性[duplicate]

  •  0
  • Adam Ness  · 技术社区  · 14 年前

    在WPF中,我似乎不能绑定到对象上的公共字段,而只能绑定到公共属性。这是WPF有意的设计决定,还是我只是语法错误?

    下面是一个示例片段:

    public class User
    {
      public string Username;
      public string FullName;
      public string DisplayName
      {
        get { return FullName; }
      }
    }
    

    WPF代码段:

    <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="User Tool" >
      <Window.Resources>
        <DataTemplate x:Key="UserTemplate">
          <TextBlock Text="{Binding Path=DisplayName}" />
        </DataTemplate>
      </Window.Resources>
      <ListBox Name="listBoxUsers" ItemTemplate="{StaticResource UserTemplate}" ItemsSource="..." />
    </Window>
    

    2 回复  |  直到 7 年前
        1
  •  7
  •   Aaron McIver    14 年前

    字段不是 binding source spec

    公共语言运行库(CLR)对象

    你可以绑定到公共属性, 子属性以及索引器, 任何公共语言运行库(CLR)的 反对。绑定引擎使用CLR 财产。或者,对象 实现ICustomTypeDescriptor的 或者注册了 捆绑的引擎。

    有关如何 实现一个类,该类可以作为 绑定源,请参见实现 这个话题。

    动态对象

    以及对象的索引器 实现 如果你能在代码中访问该成员, 你可以绑定它。例如,如果 动态对象使您能够访问 一个属性,你可以绑定到 通过将绑定路径设置为 适当的。

    ADO.NET对象

    作为数据表。ADO.NET数据视图 实现IBindingList接口, 它提供更改通知

    XML对象

    您可以绑定并运行XPath查询 XML元素。方便的进出途径 中的绑定源XML数据 反对。有关详细信息,请参见如何 to:使用 XMLDataProvider和XPath查询。

    也可以绑定到XElement或 在这些类型的对象上运行查询 使用LINQ to XML访问XML数据 使用ObjectDataProvider 反对。有关详细信息,请参见如何 到:绑定到XDocument、XElement或 XML查询结果的LINQ。

    可以绑定到依赖项属性 任何DependencyObject的。为了一个 两个控件的属性。

        2
  •  3
  •   Ragepotato    14 年前

    绑定的源可以是任何 公共财产,包括财产 其他控件的公共语言 ADO.NET数据集、XML片段和

    Source