<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="100" Width="200"> <StackPanel> <TextBox x:Name="tbxUserText" Text="Enter some text..."/> <Button Click="Button_Click" Content="Update DataContext"/> </StackPanel> </Window> //File:Window.xaml.cs using System.Windows; using System; namespace WpfApplication1 { public partial class Window1 : Window { public Window1() { InitializeComponent(); DataContextProperty.OverrideMetadata( typeof(Window1), new FrameworkPropertyMetadata( 100d, new PropertyChangedCallback(DataContext_PropertyChanged))); } private static void DataContext_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { string msg = string.Format("DataContext changed.{0}{0}Old Value: {1}{0}New Value: {2}", Environment.NewLine, e.OldValue.ToString(), e.NewValue.ToString()); MessageBox.Show(msg, "changed"); } private void Button_Click(object sender, RoutedEventArgs e) { DataContext = tbxUserText.Text; } } }