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));
}
}
}
但是我的列表视图永远不会更新,并且属性更改事件始终为空。在我读过的其他问题中,列表视图将自动订阅。但是为什么我的事件总是为空?如何强制更新特定的列表视图项?
该问题很可能与 TextBlock 的 x:Bind to Text 属性有关。x:Bind 的默认绑定模式是 OneTime。您需要将其更改为 OneWay 才能获得所需的行为。您可以在我的博客中阅读有关此更改的更多信息:http://iwindroid.me/binding-and-performance/