<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WithoutBinding" Height="135" Width="200"> <StackPanel> <TextBlock>Name:</TextBlock> <TextBox Name="nameTextBox"/> <TextBlock>Age:</TextBlock> <TextBox Name="ageTextBox"/> <Button Name="birthdayButton">Birthday</Button> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.ComponentModel; namespace WpfApplication1{ public class Employee : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void Notify(string propName) { if( this.PropertyChanged != null ) { PropertyChanged(this, new PropertyChangedEventArgs(propName)); } } string name; public string Name { get { return this.name; } set { this.name = value; Notify("Name"); } } int age; public int Age { get { return this.age; } set { this.age = value; Notify("Age"); } } public Employee() { } public Employee(string name, int age) { this.name = name; this.age = age; } } public partial class Window1 : Window { Employee emp = new Employee("Tom", 11); public Window1() { InitializeComponent(); this.nameTextBox.Text = emp.Name; this.ageTextBox.Text = emp.Age.ToString(); emp.PropertyChanged += emp_PropertyChanged; this.nameTextBox.TextChanged += nameTextBox_TextChanged; this.ageTextBox.TextChanged += ageTextBox_TextChanged; this.birthdayButton.Click += birthdayButton_Click; } void emp_PropertyChanged(object sender, PropertyChangedEventArgs e) { switch( e.PropertyName ) { case "Name": this.nameTextBox.Text = emp.Name; break; case "Age": this.ageTextBox.Text = emp.Age.ToString(); break; } } void nameTextBox_TextChanged(object sender, TextChangedEventArgs e) { emp.Name = nameTextBox.Text; } void ageTextBox_TextChanged(object sender, TextChangedEventArgs e) { int age = 0; if( int.TryParse(ageTextBox.Text, out age) ) { emp.Age = age; } } void birthdayButton_Click(object sender, RoutedEventArgs e) { ++emp.Age; Console.WriteLine(emp.Name); Console.WriteLine(emp.Age); } } }