首页 > 解决方案 > Xamarin 共享正在触发 OnAppearing 事件

问题描述

我在项目中有一个带有共享选项的集合视图,它按预期工作。但是,它通过再次调用 OnAppearing 事件来刷新页面。这导致具有如此多项目的集合视图刷新并丢失状态。

await Share.RequestAsync(new ShareTextRequest
{
    Text = message,
    Title = title
});

标签: xamarinxamarin.formsxamarin.essentials

解决方案


这导致具有如此多项目的集合视图刷新并丢失状态。

ItemsSource您可以为CollectionView绑定 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方法。

请参阅交互式 MVVM


推荐阅读