Windows 10 通用应用:属性更改事件始终为空列表视图

本文关键字:事件 视图 列表 应用 属性 Windows | 更新日期: 2023-09-27 18:30:51

我有一个Windows 10通用应用程序,其中包含XAML中的ListView和一个通过ItemsSource="{x:Bind Messenger.Contacts}"绑定到ListView的ObservableCollection<Contact>。现在,我希望 ListView 在更改属性时更新列表视图元素的特定绑定(也通过 x:Bind)属性的文本。我的 ContactClass 实现了 INotifyPropertyChanged,它是公共的,并且在我使用正确的属性名称触发 NotifyPropertyChanged 的每个属性设置器中。

 public class Contact : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        protected string name;
        public string Name
        { 
            get
            {
                return this.name;
            }
            set
            {
                this.name= value;
                NotifyPropertyChanged("Name");
            }
        }
protected virtual void NotifyPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = this.PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
 }

但是我的列表视图永远不会更新,并且属性更改事件始终为空。在我读过的其他问题中,列表视图将自动订阅。但是为什么我的事件总是为空?如何强制更新特定的列表视图项?

Windows 10 通用应用:属性更改事件始终为空列表视图

该问题很可能与 TextBlock 的 x:Bind to Text 属性有关。x:Bind 的默认绑定模式是 OneTime。您需要将其更改为 OneWay 才能获得所需的行为。您可以在我的博客中阅读有关此更改的更多信息:http://iwindroid.me/binding-and-performance/