Из книги WPF 4 Развязанная:Какое официальное слово связывается с не-свойствами (например, поля)?
Хотя свойство источника может быть любым .NET свойством любого объекта .NET , то же самое справедлив для цели привязки данных. Объект target должен быть зависимым. Также обратите внимание, что элемент источника должен быть реальным (и общедоступным) свойством, а не просто простым полем.
Однако, вот пример встречного утверждения, согласно которому источником должно быть имущество. Эта программа связывает Label
и ListBox
с обычным полем типа ObservableCollection<int>
.
Xaml:
<Window x:Class="BindingObservableCollectionCountLabel.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<DockPanel>
<StackPanel>
<TextBox Name="textBox" Text="10"/>
<Button Name="add" Click="add_Click" Content="Add"/>
<Button Name="del" Click="del_Click" Content="Del"/>
<Label Name="label" Content="{Binding Source={StaticResource ints}, Path=Count}"/>
<ListBox ItemsSource="{Binding Source={StaticResource ints}}"/>
</StackPanel>
</DockPanel>
</Window>
C#:
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);
}
}
}
Так что официальное слово о том, что квалифицируется как источник привязки данных? Должны ли мы привязываться только к свойствам? Или также технически разрешены поля?
Спасибо за разъяснение Тигран! – dharmatech
@dharmatech: добро пожаловать – Tigran
Привязка к свойству также позволяет использовать INotifyPropertyChanged, который является огромным основным элементом WPF. – Yatrix