【问题标题】:Updating ComboBox Source Doesn't Update ComboBox更新 ComboBox 源不会更新 ComboBox
【发布时间】:2019-07-09 15:45:11
【问题描述】:

我有一个 ComboBox,它的 ItemSource 绑定到称为 PersonsList 的 Person 类型的 ObservableCollection。此 ComboBox 上的 DisplayMemberPath 设置为 FullName(仅返回名字 + 姓氏)

Person 中存储了各种东西,例如名字、姓氏、电话号码、地址等。

现在,当我更新 PersonsList 中的一个人时,我会更新相应的数据字段并调用 OnPropertyChanged("PersonsList")。现在,当我返回查看该 ComboBox 时,就会出现我的问题。如果我更新了一个人的名字或姓氏,它不会在此处更新。但是,当我点击应该更新的人时,它会正确显示新更新的名字/姓氏。

这里有两张图片,看看我的意思: https://imgur.com/a/fP6apoX

最后,这是我的 XAML 代码:

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

【问题讨论】:

  • 应该是 Person 触发 PropertyChanged,因为改变的是人,而不是 PersonsList

标签: c# wpf data-binding


【解决方案1】:

你需要修改你的 Person 类,如下所示,因为与 View 映射的属性属于 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));
        }
    }


}

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2018-09-15
    • 2011-10-25
    • 2021-09-26
    • 1970-01-01
    相关资源
    最近更新 更多