我在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项?
答案 0 :(得分:2)
最有可能与TextBlock的x:Bind to Text属性相关的问题。 x:Bind的默认绑定模式是OneTime。您需要将其更改为OneWay才能获得所需的行为。您可以在我的博客中详细了解此更改:http://iwindroid.me/binding-and-performance/