心澄欲遣

不践迹,亦不入于室

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  • Model层
 public class Song
    {
        private string _artistName;
        private string _songTitle;

        public string SongTitle
        {
            get { return _songTitle; }
            set { _songTitle = value; }
        }


        public string ArtistName
        {
            get { return _artistName; }
            set { _artistName = value; }
        }

    }
  • ViewModel

RelayCommand

 public class RelayCommand : ICommand
    {

        private readonly Func<Boolean> _canExecute;

        private readonly Action<object> _execute;

        public RelayCommand(Action<object> execute)
            : this(execute, null)
        {

        }

        public RelayCommand(Action<object> execute, Func<bool> canExecute)
        {
            if (execute == null)
                throw new ArgumentNullException("execute is null");
            _canExecute = canExecute;
            _execute = execute;
        }

        public bool CanExecute(object parameter)
        {
            return _canExecute == null ? true : _canExecute();
        }

        public event EventHandler CanExecuteChanged
        {
            add
            {
                if (_canExecute != null)
                {
                    CommandManager.RequerySuggested += value;
                }
            }
            remove
            {
                if (_canExecute != null)
                {
                    CommandManager.RequerySuggested -= value;
                }
            }
        }

        public void Execute(object parameter)
        {
            _execute(parameter);
        }
    }
 public sealed class SongVM : INotifyPropertyChanged
    {
        private Song _song;

        public SongVM()
        {
            _song = new Song() { SongTitle = "叮叮当", ArtistName = "wjp" };
        }

        public Song Song
        {
            get { return _song; }
            set
            {
                _song = value;
            }
        }

        public string ArtistName
        {
            get { return Song.ArtistName; }
            set
            {
                if (ArtistName != value)
                {
                    Song.ArtistName = value;
                    RaisePropertyChanged("ArtistName");
                }
            }
        }

        public string SongTitle
        {
            get { return Song.SongTitle; }
            set
            {
                if (SongTitle!=value)
                {
                    Song.SongTitle = value;
                    RaisePropertyChanged("SongTitle");
                }
            }
        }


        public event PropertyChangedEventHandler PropertyChanged;

        private void RaisePropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void Execute(object para)
        {
            if (para != null)
                ArtistName = para.ToString();
        }

        private bool CanExeCute()
        {
            return true;
        }

        public ICommand UpdateAtistName
        {
            get
            {
                return new RelayCommand(Execute, CanExeCute);
            }
        }
    }
  • View
<Window x:Class="MVVMLightDemo.View.SampleMVVM"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:localVM="clr-namespace:MVVMLightDemo.ViewModel"
        Title="SampleMVVM" Height="200" Width="200">
    <Window.DataContext>
        <localVM:SongVM/>
    </Window.DataContext>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Grid.Row="0" Text="姓名" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        <TextBlock Grid.Column="0" Grid.Row="1" Text="歌曲名称" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding ArtistName}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        <TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding Song.SongTitle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        <Button Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="2" Margin="5" Content="更新姓名" Command="{Binding UpdateAtistName}" CommandParameter="王俊鹏"/>
    </Grid>
</Window>

 

posted on 2016-02-24 09:07  心澄欲遣  阅读(279)  评论(0编辑  收藏  举报
欢迎第myspace graphics个访客