Xamarin-如何在我的应用程序中显示通知? (ContentPage.ToolbarItems)

时间:2019-04-02 13:33:52

标签: xamarin xamarin.forms

我有一个Xamarin Forms应用程序,在该应用程序中,我将Master-Detail模板与MVVM结合使用。它非常适合我的需求。关键是,我偶尔会在显示的视图的顶部栏中以类似通知的方式显示某种信息。有时这会是错误消息,例如“服务器无法访问”或“不允许操作”。

问题是,似乎唯一可以将其放入该栏中的方法是通过ContentPage.ToolbarItems,它没有DataBinding或通过ViewModel进行访问的任何方式。

我想出的一个可能的解决方案是将视图作为参数传递给ViewModel,然后从那里执行类似view.ToolbarItems.Add(new ToolbarItem("abc", null, () => { }));的操作。但这在相当基本的水平上打破了MVVM,因为ViewModel引用了View。可以使用界面遮罩视图,但是我根本不喜欢这种解决方案。

那么,我可以使用DataBinding在Xamarin Master-Detail应用程序的顶部栏中动态添加和删除按钮吗?

1 个答案:

答案 0 :(得分:1)

正如您已经提到的,在视图模型中引用视图绝不是一个好主意,因为它破坏了MVVM模式。在像您这样的情况下,当绑定不可用时,明智/可接受的方法是从视图中订阅视图模型,以便在视图模型发生更改时对其进行更新。

在您的视图中添加类似内容:

ViewModel.PropertyChanged += OnViewModelPropertyChanged; 

...

private void OnViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    switch (e.PropertyName)
    {
        case nameof(ViewModel.YourProperty):
            // Apply changes to the view here, for example:
            ToolbarItems.Add(new ToolbarItem(ViewModel.YourProperty, null, () => { }));
            break;
    }
}

我希望这会有所帮助!