Простая привязка WPF к свойству объектов
У меня возникли некоторые проблемы с привязкой в wpf/xaml. Есть этот простой файл:
<Window x:Class="test.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<TextBlock Height="21" Foreground="Black" Margin="74,98,84,0" Name="textBlock1" VerticalAlignment="Top" Text="{Binding MyText}" />
</Grid>
</Window>
Где я хочу привязать содержимое текстового блока к моей собственности "MyText". Мой код выглядит так:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
public string MyText
{
get { return "This is a test"; }
}
}
В целом все очень просто, но когда я начинаю, у текстового блока нет содержимого - как это получается?
3 ответа
Решение
Вам нужно имя элемента в вашей привязке:
<Window ... x:Name="ThisWindow"...>
<TextBlock ... Text="{Binding MyText, ElementName=ThisWindow}" />
Если я правильно помню синтаксис привязки WPF, я считаю, что ваше выражение привязки должно иметь вид Text="{Binding Path=MyText}"
Есть несколько способов сделать это. Вероятно, самый простой для чего-то такого простого, как эта форма:
public Window1()
{
InitializeComponent();
this.DataContext = this;
}