我有页面。在页面中我有项目 - 每个项目都是grid
。在grid
我很少contentviews
。在其中一个 - 我有按钮。
现在我想尝试向用户DisplayActionSheet
显示。 - 但因为它是一个内容视图 - 我不能称之为 -
我也试过了App.Current.MainPage
- 但它确实帮助了我。
P.S - 还有问题 - 也许你知道这样做的方法: http://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_dropdown-menu&stacked=h 在xamarin?
谢谢
答案 0 :(得分:2)
这是 使用MessagingCenter
进行此操作的一种方法。
在您的ContentView中,当您希望包含的页面执行DisplayActionSheet
时,您可以发布消息。在ContentView中,如果需要DisplayActionSheet
发布用户选择的结果以及订阅该消息ID的内容,您还可以订阅到ContentPage
的结果(然后你的ContentView
可以对它做出反应。
ContentView
- 基于代码:var gridButton = new Button { Text = "This button is in a Content View" };
gridButton.Clicked += delegate
{
var questions = new List<string> { "My ActionSheet Title", "Cancel", "Delete", "Share" };
MessagingCenter.Send<object, List<string>>(this, "PhotoMessageQuestion", questions);
};
MessagingCenter.Subscribe<object, string>(this, "PhotoMessageAnswer", (sender, arg) =>
{
System.Diagnostics.Debug.WriteLine("User choose: {0}", arg);
});
ContentPage
- 基于代码:MessagingCenter.Subscribe<object, List<string>>(this, "PhotoMessageQuestion", async (sender, arg) =>
{
var photoAction = await DisplayActionSheet(arg[0], arg[1], arg[2], arg[3]);
MessagingCenter.Send<object, string>(this, "PhotoMessageAnswer", photoAction);
});