Обновление источника ComboBox не обновляет ComboBox - PullRequest
0 голосов
/ 09 июля 2019

У меня есть ComboBox, чей ItemSource связан с ObservableCollection типа Person с именем PersonsList.DisplayMemberPath на этом ComboBox имеет значение FullName (которое просто возвращает имя и фамилию)

В персоне хранятся различные вещи, такие как имя, фамилия, номер телефона, адрес и т. Д.

Теперь, когда я обновляю человека в PersonsList, я обновляю соответствующие поля данных и вызываю OnPropertyChanged ("PersonsList").Теперь моя проблема возникает, когда я возвращаюсь, чтобы просмотреть этот ComboBox.Если я обновил имя или фамилию человека, он не обновляется здесь.Однако, когда я нажимаю на человека, который должен был быть обновлен, он отображает обновленное имя / фамилию правильно.

Вот 2 изображения, чтобы понять, что я имею в виду: https://imgur.com/a/fP6apoX

Наконец, вот мой код XAML:

ComboBox ItemsSource="{Binding PersonsList, UpdateSourceTrigger=PropertyChanged}" 
DisplayMemberPath="FullName"/>

1 Ответ

0 голосов
/ 09 июля 2019

Вам необходимо изменить свой класс Person, как указано ниже, поскольку свойство, сопоставленное с представлением, принадлежит классу Person, поэтому событие с измененным свойством должно вызываться классом Person

public class Person : INotifyPropertyChanged
{
    /// <summary>
    /// Property Changed Event Handler
    /// </summary>
    public event PropertyChangedEventHandler PropertyChanged;

    // Create the OnPropertyChanged method to raise the event
    protected void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }

    private String _FirstName;
    public String FirstName {
        get {
            return _FirstName;
        }
        set {
            _FirstName = value;
            OnPropertyChanged(nameof(FirstName));
        }
    }

    private String _LastName;
    public String LastName
    {
        get
        {
            return _LastName;
        }
        set
        {
            _LastName = value;
            OnPropertyChanged(nameof(LastName));
        }
    }

    private String _FullName;
    public String FullName
    {
        get
        {
            return _FullName;
        }
        set
        {
            _FullName = value;
            OnPropertyChanged(nameof(FullName));
        }
    }


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