Вам не хватает реализации INotifyPropertyChanged
.
Рабочий пример:
using System.ComponentModel;
public partial class MainWindow : Window, INotifyPropertyChanged
{
private string output;
public string Output
{
get { return output; }
set
{
output = value;
OnPropertyChanged(); // notify the GUI that something has changed
}
}
public MainWindow()
{
this.DataContext = this;
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Output = "Hallo";
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName: propertyName));
}
}
}
Код XAML будет выглядеть следующим образом:
<TextBox Text="{Binding Output}"/>
Как вы можете видеть, всякий раз, когда Output
свойство изменяется, будет вызвано событие PropertyChanged
.Каждый элемент GUI, связанный с этим свойством, будет знать, что что-то изменилось.
Примечание: [CallerMemberName]
автоматически получает имя свойства, с которым был вызван метод.Если вы не хотите его использовать, удалите его.Вы должны изменить OnPropertyChanged
вызов на OnPropertyChanged("Output");
, однако.