Xamarin分享正在触发OnAppearing事件

问题描述

我有一个在项目中带有“共享”选项的集合视图,它按预期方式工作。但是,它通过再次调用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