问题描述
我有一个在项目中带有“共享”选项的集合视图,它按预期方式工作。但是,它通过再次调用OnAppearing事件来刷新页面。这会导致具有很多项目的集合视图刷新并丢失状态。
await Share.RequestAsync(new ShareTextRequest
{
Text = message,Title = title
});
解决方法
这会导致具有很多项目的收藏夹视图刷新并丢失状态。
您可以为 CollectionView 的ItemsSource
绑定ViewModel,并且ViewModel和Model将从INotifyPropertyChanged
继承。然后,当ViewModel的属性更改时,它将与UI交互。
例如:
public class ShareItem: INotifyPropertyChanged
{
private string text,title;
public string Text
{
set
{
if (text != value)
{
text = value;
OnPropertyChanged("Text");
}
}
get
{
return text;
}
}
public string Title
{
set
{
if (title != value)
{
title = value;
OnPropertyChanged("Title");
}
}
get
{
return title;
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(propertyName));
}
}
现在,当属性更改时,它将更新ViewModel的数据。您无需调用OnAppearing
方法。
请参考 Interactive MVVM 。