Xamarin.Forms - ContentView - DisplayActionSheet

时间:2016-05-01 06:16:42

标签: xamarin xamarin.ios xamarin.android xamarin.forms

我有页面。在页面中我有项目 - 每个项目都是grid。在grid我很少contentviews。在其中一个 - 我有按钮。

现在我想尝试向用户DisplayActionSheet显示。 - 但因为它是一个内容视图 - 我不能称之为 -

我也试过了App.Current.MainPage - 但它确实帮助了我。

P.S - 还有问题 - 也许你知道这样做的方法: http://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_dropdown-menu&stacked=h 在xamarin?

谢谢

1 个答案:

答案 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);
});

结果:

enter image description here