MVVM test

示例代码

    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;
        }
    }
ViewModel
<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>
Xaml View
    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;
            }
        }
    }
View cs
    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");
            }
        }
    }
Model

 

posted @ 2015-07-09 16:18  三叶草╮  阅读(235)  评论(0编辑  收藏  举报