Я новичок в WPF и пытаюсь выяснить, как работает привязка данных, но мне не очень повезло.
Я пытаюсь начать с чего-то простого - связать содержимое текстового поля со строковой переменной в моей программе.
Я прочитал множество страниц документации MSDN о привязке данных, пространствах имен XML, расширениях разметки, ресурсах, свойствах зависимостей и прочем, и все еще не могу заставить его работать.
Вот мой MainWindow.xaml:
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:WpfTest"
Title="MainWindow">
<Grid>
<Grid.Resources>
<c:Foo x:Key="MyFoo"/>
</Grid.Resources>
<TextBox Width="100" Height="28"
Text="{Binding Source=MyFoo,
Path=BarProperty,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</Window>
И мой MainWindow.xaml.cs:
namespace WpfTest
{
public class Foo : DependencyObject
{
public static readonly DependencyProperty BarProperty = DependencyProperty.Register("Bar", typeof(String), typeof(Foo));
public String Bar
{
get { return (String)GetValue(BarProperty); }
set { SetValue(BarProperty, value); }
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyFoo = new Foo { Bar = "hello" };
}
public Foo MyFoo { get; set; }
}
}
Я ожидал бы, что в текстовом поле будет показано «привет» при запуске программы, но оно пустое.
Может кто-нибудь сказать мне, что я делаю не так?