XAML Ipmlementation
<Window x:Class="WpfDataBindingDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Data Binding Demo" Height="150" Width="250">
<Grid Margin="10">
<StackPanel>
<TextBox Text="{Binding DisplayText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Button Content="Update Value" Click="UpdateValue_Click" Margin="0,10,0,0"/>
</StackPanel>
</Grid>
</Window>
C# Code-Behind and ViewModel
using System.ComponentModel;
using System.Windows;
namespace WpfDataBindingDemo
{
public partial class MainWindow : Window
{
private readonly DataModel model = new DataModel();
private int updateCount = 0;
public MainWindow()
{
InitializeComponent();
DataContext = model;
}
private void UpdateValue_Click(object sender, RoutedEventArgs e)
{
updateCount++;
model.DisplayText = $"Update #{updateCount}";
}
}
public class DataModel : INotifyPropertyChanged
{
private string _displayText = "Initial value";
public string DisplayText
{
get => _displayText;
set
{
_displayText = value;
OnPropertyChanged(nameof(DisplayText));
}
}
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}