这只是使用MessagingCenter的一种方法。
当您希望包含页面执行DisplayActionSheet 时,您可以在您的 ContentView 中发布一条消息。在 ContentView 中,如果需要,您还可以 订阅 DisplayActionSheet 的结果,方法是让 ContentPage 发布用户选择的结果以及订阅该消息 ID 的任何内容(您的 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);
});
结果: