Windows 10 Universal App:PropertyChanged事件始终为null ListView

时间:2016-01-17 01:59:05

标签: c# listview

我在XAML中有一个带有ListView的Windows 10 Universal App和一个ObservableCollection<Contact>,它通过ItemsSource="{x:Bind Messenger.Contacts}"绑定到ListView。现在,如果属性发生更改,我希望ListView更新listview元素的特定边界(也通过x:Bind)属性的文本。我的ContactClass实现了INotifyPropertyChanged,是公共的,并且在每个属性setter中我使用正确的属性名称激活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));
            }
        }
 }

但我的ListView永远不会更新,PropertyChanged事件始终为null。在我读过的其他问题中,ListView将自动订阅。但为什么我的事件总是空?我如何强制更新特定的ListView项?

1 个答案:

答案 0 :(得分:2)

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