我一直在使用我喜欢的Exrin Xamarin表单框架。
我来到一个阻滞剂,在那里我想把一个容器作为一个模态。有人知道怎么做吗?我找不到任何例子,也找不到如何将容器作为Modal推送的最佳方法。
看看Exrin代码,可能需要更改BaseStack.cs,创建一个NavigationModal ResultType,生活方式,这样它就不会影响内存容器中已经存在的.?
还有其他想法吗?
发布于 2017-03-07 23:25:27
Exrin及其栈背后的想法是,不需要使用Modal。Modals的唯一原因是,您不能只按下从现有页面上返回的页面并将其放在现有页面的顶部。
这里推荐的方法是创建一个新的Stack并导航到它。然后,在完成后返回到前一个堆栈。它的行为方式与Modal相同,但您不需要实际使用Modal。
更新
如果您必须有一个模式,而支持转换的其他方式发挥作用,您可以修改您的NavigationProxy。替换以下2项职能。
public async Task PopAsync()
{
if (_page.Navigation.ModalStack.Count > 0)
{
var page = _page.Navigation.ModalStack[0];
_page_Popped(null, new NavigationEventArgs(page));
await _page.Navigation.PopModalAsync();
}
else
await _page.PopAsync();
}
public async Task PushAsync(object page)
{
var xamarinPage = page as Page;
if (xamarinPage == null)
throw new Exception("PushAsync can not push a non Xamarin Page");
if (page is ExrinSample.View.AboutView)
await _page.Navigation.PushModalAsync(xamarinPage);
else
await _page.PushAsync(xamarinPage);
}当然,这是手动引用代理中的特定页面。如果您想清理它,可以在Stack中添加一些方法来列出具有模态的页面,并在需要时使用该列表推送到模态,而不是直接将页面名称放在代理中。
https://stackoverflow.com/questions/42660205
复制相似问题