public class RegisterUserViewModel { public UserInfo userInfo { get; set; } public ICommand ClickCommand { get; set; } public RegisterUserViewModel() { userInfo = new UserInfo(); userInfo.Age = 25; this.ClickCommand = new DelegateCommand<object>(OnClick, arg => true); } void OnClick(object obj) { userInfo.Age += 1; } }
<Window x:Class="mvvmTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Height="23" HorizontalAlignment="Left" Margin="12,0,0,72" Name="btnClick" VerticalAlignment="Bottom" Width="75" Command="{Binding ClickCommand}">Click me</Button> <TextBlock Height="21" Margin="12,44,0,0" Name="textBlock1" VerticalAlignment="Top" Text="UserName:" HorizontalAlignment="Left" Width="62" /> <TextBlock Margin="12,93,0,0" Name="textBlock2" Height="21" HorizontalAlignment="Left" VerticalAlignment="Top" Width="62" Text="Age:" /> <TextBlock Height="21" Margin="99,44,117,0" Name="tbUserName" Text="" VerticalAlignment="Top" /> <TextBlock Height="21" Margin="99,93,117,0" Name="tbAge" Text="{Binding userInfo.Age}" VerticalAlignment="Top" /> </Grid> </Window>
public partial class MainWindow : Window { private RegisterUserViewModel viewModel; public MainWindow() { InitializeComponent(); this.ViewModel = new RegisterUserViewModel(); } public RegisterUserViewModel ViewModel { get { return this.viewModel; } set { this.viewModel = value; this.DataContext = value; } } }
public class NotificationObject : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void RaisePropertyChanged(string propertyName) { if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } public class UserInfo : NotificationObject { private int age; public int Age { get { return age; } set { age = value; this.RaisePropertyChanged("Age"); } } }