Вы должны установить DataContext
:
public MainWindow()
{
InitializeComponent();
SimpleText = "this is a test";
this.DataContext = this;
}
В качестве альтернативы, вы можете установить DataContext
на стороне XAML, как это:
XAML
<Window x:Class="TextBlockDontBind.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:this="clr-namespace:TextBlockDontBind"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<this:TestData />
</Window.DataContext>
<StackPanel>
<TextBlock Text="{Binding SimpleText}" Width="200"/>
</StackPanel>
</Window>
Code-behind
public class TestData
{
private string _simpleText = "this is a test";
public string SimpleText
{
get
{
return _simpleText;
}
set
{
_simpleText = value;
}
}
}
Но в этом случае для обновления свойства для класса должен реализоваться интерфейс INotifyPropertyChanged
.
Спасибо! Вы также можете установить DataContext перед назначением текста. – 4thSpace
Расширяясь в этом примере, вы знаете, почему в этом сценарии отображается пустое окно: http://stackoverflow.com/questions/21767121/how-to-bind-to-collection-2-deep? DataContext теперь установлен, но все еще ничего. – 4thSpace
@ 4thSpace: см. Мое редактирование, где я описал альтернативу для установки «DataContext». Хорошо, я вижу этот вопрос. –