Ada*_*ess 0 .net c# wpf binding
似乎在WPF中我不能绑定到对象的公共字段,而只能绑定到公共属性.这是WPF的故意设计决定,还是我只是弄错了语法?
这是一个示例代码段:
public class User
{
public string Username;
public string FullName;
public string DisplayName
{
get { return FullName; }
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
如果我将绑定路径更改为用户名或全名,则屏幕上不会显示任何内容.是否有替代语法绑定到字段,或仅绑定属性?
字段不是绑定源规范的一部分
公共语言运行时(CLR)对象
您可以绑定到任何公共语言运行时(CLR)对象的公共属性,子属性以及索引器.绑定引擎使用CLR反射来获取属性的值.或者,实现ICustomTypeDescriptor或具有已注册的TypeDescriptionProvider的对象也可以使用绑定引擎.
有关如何实现可用作绑定源的类的更多信息,请参阅本主题后面的为绑定源实现类.
动态对象
您可以绑定到实现IDynamicMetaObjectProvider接口的对象的可用属性和索引器.如果您可以在代码中访问该成员,则可以绑定它.例如,如果动态对象允许您通过someObjet.AProperty访问代码中的成员,则可以通过设置AProperty的绑定路径来绑定它.
ADO.NET对象
您可以绑定到ADO.NET对象,例如DataTable.ADO.NET DataView实现IBindingList接口,该接口提供绑定引擎侦听的更改通知.
XML对象
您可以在XmlNode,XmlDocument或XmlElement上绑定并运行XPath查询.访问作为标记中绑定源的XML数据的便捷方法是使用XmlDataProvider对象.有关更多信息,请参见如何:使用XMLDataProvider和XPath查询绑定到XML数据.
您还可以使用LINQ to XML绑定到XElement或XDocument,或绑定到在这些类型的对象上运行的查询结果.使用LINQ to XML访问作为标记中绑定源的XML数据的便捷方法是使用ObjectDataProvider对象.有关更多信息,请参见如何:绑定到XDocument,XElement或LINQ for XML Query Results.
DependencyObject对象
您可以绑定到任何DependencyObject的依赖项属性.有关示例,请参见如何:绑定两个控件的属性.
| 归档时间: |
|
| 查看次数: |
4564 次 |
| 最近记录: |