Привязка данных к пользовательскому объекту - PullRequest
0 голосов
/ 09 марта 2012

У меня есть простой пользовательский класс (Person), который я хочу связать с меткой в ​​целом (не для разделения свойств этого класса). Метка должна просто представлять все, что возвращает Person.ToString() (в данном случае FirstName + LastName).

  1. Как правильно связать это, используя человека в качестве источника.
  2. Как мне убедиться, что любое изменение в одном из свойств Персона будет отражено на ярлыке?

public class Person : INotifyPropertyChanged {
    private string firstName;
    public string FirstName {
        get { 
           return firstName; 
        }

        set {
            firstName = value;
            OnPropertyChanged("FirstName");
        }
    }

    private string lastName;

    public string LastName {
        get { 
            return lastName; 
        }

        set {
            lastName = value;
            OnPropertyChanged("LastName");
        }
    }

    public override string ToString() {           
        return FirstName + " " + LastName;
    }

    private void OnPropertyChanged(string name) {
        if (PropertyChanged != null) {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;

    #endregion
}

public Window1() {
myPerson = new Person() {
    FirstName = "AAA",
        LastName = "BBB"};

    InitializeComponent();
}

public Person MyPerson  {
    get { 
        return myPerson; 
    }

    set { 
        myPerson = value; 
    }
}

Label Content="{Binding Source=MyPerson}"

1 Ответ

3 голосов
/ 09 марта 2012

Создайте новое свойство FullName, которое возвращает полное имя, и увеличьте PropertyChanged для FullName также в установщиках FirstName и LastName. Вы никогда не должны привязываться к самому объекту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...