我有一个应用程序,我希望在每个详细信息页面都有一个包含2个选项和toolbarItems的母版页.
例如,这里我有一个设置页面作为我的详细信息页面,其中有两个tollbaritems保存和取消.用户必须输入必须保存的用户数据的形式.所以点击保存toolbarItem我想保存数据并将用户重定向到其他页面(比如'PageA'),这不包含在主页列表选项中(Settins,Login)
我该怎么办呢?如果我这样做,await Navigation.PushAsync(new PageA());
我不会得到母版.我回到图标回到主要详细信息页面.但我想将用户重定向到一个页面,该页面也应该有masterdetails选项(设置和登录).
我也在保存按钮点击中尝试了这个:
MasterDetailPage MDPage = new MasterDetailPage();
MDPage.Detail = new NavigationPage(new PageA());
MDPage.IsPresented = false;
Run Code Online (Sandbox Code Playgroud)
提前致谢.
编辑 这是我的代码:
MasterPage.cs
public ListView ListView { get { return listView; } }
ListView listView;
public MasterPage()
{
var masterPageItems = new List<MasterPageItem>();
masterPageItems.Add(new MasterPageItem
{
Title = "Settings",
//IconSource = "Settings.png",
TargetType = typeof(TestPage)
});
listView = new ListView
{
ItemsSource = masterPageItems,
ItemTemplate = new DataTemplate(() =>
{
var imageCell = new ImageCell();
imageCell.SetBinding(TextCell.TextProperty, "Title");
imageCell.SetBinding(ImageCell.ImageSourceProperty, "IconSource");
return imageCell;
}),
VerticalOptions = LayoutOptions.FillAndExpand,
SeparatorVisibility = SeparatorVisibility.None
};
Padding = new Thickness(0, 40, 0, 0);
// Icon = "hamburger.png";
Title = "Menu";
BackgroundColor = Color.FromHex("#4F6276");
Content = new StackLayout
{
VerticalOptions = LayoutOptions.FillAndExpand,
Children = {
listView
}
};
}
Run Code Online (Sandbox Code Playgroud)
MasterDetailsPage:
public class MainPage : MasterDetailPage
{
public MainPage()
{
MasterPage masterPage;
masterPage = new MasterPage();
Master = masterPage;
Detail = new NavigationPage(new TestPage())
{
//Tint = Color.Red // put your color here
BarBackgroundColor = Color.FromRgb(172, 183, 193),//Color.FromHex("#9E9E9E"),
BarTextColor = Color.Black,
BackgroundColor = Color.White
};
}
}
Run Code Online (Sandbox Code Playgroud)
TestPage:
public class TestPage : ContentPage
{
public TestPage()
{
Button test = new Button();
test.Clicked += test_Clicked;
test.Text = "Save";
Button test1 = new Button();
test1.Clicked += test1_Clicked;
test1.Text = "cancel";
Content = new StackLayout
{
Children = {
test,
test1
}
};
}
void test_Clicked(object sender, EventArgs e)
{
//redirect to new page(Page1)
}
void test1_Clicked(object sender, EventArgs e)
{
//redirect to new page(Page2)
}
}
Run Code Online (Sandbox Code Playgroud)
我想从onclick事件重定向到新页面说page1.我该如何实现这一目标?
保存设置后,您应该更改现有 MasterDetailPage实例的详细信息.
我认为最简单,最清晰的方法是使用MessagingCenter:
在设置页面中:
MessagingCenter.Send(new OpenMyPageMessage(), OpenMyPageMessage.Key);
Run Code Online (Sandbox Code Playgroud)
您的主要详细信息页面:
protected override void OnAppearing()
{
MessagingCenter.Subscribe<OpenMyPageMessage>(this, OpenMyPageMessage.Key, (sender) =>
{
Detail = new YourAnotherPage();
});
}
protected override void OnDisappearing()
{
MessagingCenter.Unsubscribe<OpenMyPageMessage>(this, OpenMyPageMessage.Key);
}
Run Code Online (Sandbox Code Playgroud)
而且OpenMyPageMessage
只是一个简单的课程:
public class OpenMyPageMessage
{
public static string Key = "OpenMyPageMessage";
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2336 次 |
最近记录: |