C# 什么';关于绑定到非属性(即字段)的官方说法是什么?
从《WPF 4释放》一书中: 尽管源属性可以是任何.NET上的任何.NET属性 对象,对于数据绑定目标,情况并非如此。目标 属性必须是依赖项属性。还请注意,源代码 成员必须是真实(和公共)属性,而不仅仅是一个简单字段 然而,这里有一个反例来反驳源必须是属性的说法。此程序将C# 什么';关于绑定到非属性(即字段)的官方说法是什么?,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,从《WPF 4释放》一书中: 尽管源属性可以是任何.NET上的任何.NET属性 对象,对于数据绑定目标,情况并非如此。目标 属性必须是依赖项属性。还请注意,源代码 成员必须是真实(和公共)属性,而不仅仅是一个简单字段 然而,这里有一个反例来反驳源必须是属性的说法。此程序将标签和列表框绑定到类型为ObservableCollection的正常字段 Xaml: C#: 使用系统; 使用System.Windows; 使用System.Collections.ObjectModel; 命名空间绑定
标签
和列表框
绑定到类型为ObservableCollection
的正常字段
Xaml:
C#:
使用系统;
使用System.Windows;
使用System.Collections.ObjectModel;
命名空间绑定ObservableCollectionCountLabel
{
公共部分类主窗口:窗口
{
公共可观测收集点;
公共主窗口()
{
Add(“ints”,ints=newobserveCollection());
初始化组件();
}
私有无效添加\单击(对象发送者,路由目标)
{
ints.Add(Convert.ToInt32(textBox.Text));
}
私有无效删除单击(对象发送者,路由目标e)
{
如果(整数计数>0)整数删除(0);
}
}
}
那么什么是数据绑定源的官方说法呢?我们应该只绑定属性吗?或者字段在技术上也是允许的?否,它不会特别绑定到字段,而是使用
静态资源绑定到字段:
Binding Source={StaticResource ints //StaticResource !!
您可以定义一个静态资源(基本上)并绑定到它。如果你想直接绑定到你的类,你需要按照文档的建议使用属性。谢谢你的澄清!绑定到属性还允许您使用INotifyPropertyChanged,这是WPF的一个主要功能。
using System;
using System.Windows;
using System.Collections.ObjectModel;
namespace BindingObservableCollectionCountLabel
{
public partial class MainWindow : Window
{
public ObservableCollection<int> ints;
public MainWindow()
{
Resources.Add("ints", ints = new ObservableCollection<int>());
InitializeComponent();
}
private void add_Click(object sender, RoutedEventArgs e)
{
ints.Add(Convert.ToInt32(textBox.Text));
}
private void del_Click(object sender, RoutedEventArgs e)
{
if (ints.Count > 0) ints.RemoveAt(0);
}
}
}
Binding Source={StaticResource ints //StaticResource !!