Sanguosha.UI.Controls.PlayerViewModel._OnPlayerPropertyChanged C# (CSharp) Method

_OnPlayerPropertyChanged() private method

private _OnPlayerPropertyChanged ( object o, PropertyChangedEventArgs e ) : void
o object
e System.ComponentModel.PropertyChangedEventArgs
return void
        private void _OnPlayerPropertyChanged(object o, PropertyChangedEventArgs e)
        {
            string name = e.PropertyName;
            if (name == "Role")
            {
                _UpdatePossibleRoles();
                OnPropertyChanged("Role");
                OnPropertyChanged("PossibleRoles");
            }
            else if (name == "Hero")
            {
                Application.Current.Dispatcher.Invoke((ThreadStart)delegate()
                {
                    Hero1Model.Hero = Hero;
                    OnPropertyChanged("Hero");
                });
            }
            else if (name == "Hero2")
            {
                Application.Current.Dispatcher.Invoke((ThreadStart)delegate()
                {
                    Hero2Model.Hero = Hero2;
                    OnPropertyChanged("Hero2");
                });
            }
            else if (name == "Skills")
            {
                if (Application.Current.Dispatcher.CheckAccess())
                {
                    _UpdateSkills();
                }
                else
                {
                    Application.Current.Dispatcher.Invoke((ThreadStart)delegate() { _UpdateSkills(); });
                }
            }
            else if (name == "Attributes")
            {
                if (Application.Current.Dispatcher.CheckAccess())
                {
                    _UpdateAttributes();
                }
                else
                {
                    Application.Current.Dispatcher.Invoke((ThreadStart)delegate() { _UpdateAttributes(); });
                }
            }
            else
            {
                var propNames = from prop in this.GetType().GetProperties() select prop.Name;
                if (propNames.Contains(name))
                {
                    OnPropertyChanged(name);
                }
            }
        }