我有问题,我现在无法弄清楚。 我正在尝试开发一个Windows-8风格的应用程序,并且我坚持实现这个功能。
我有一个 MainWindow ,其中包含一个ListBox和一个Button(比如说 addButton )。
当我点击按钮时,我导航到一个新页面,让我们用this.Frame.Navigate(typeof(AddCustomerPage))说明 AddCustomerPage ;
AddCustomerPage 有1个textBox和1个按钮(比如说 doneButton 。当我点击按钮时,我希望将textBox中的字符串添加到上一个ListBox中页。
这是我目前的功能: 1. MainWindow已创建。
点击addButton
创建了AddCustomer页面。 MainWindow被销毁(问题)。
点击doneButton
使用带有1个项目的ListBox创建MainWindow对象。
重复添加过程,我总是得到一个带有1个项目的ListBox的MainWindow。
感谢您的帮助。这是代码:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.brainPageController = new PageController();
// add items from the List<String> to the listBox
listGoals.ItemsSource = brainPageController.GetListGoals();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var parameter = e.Parameter as String;
// a simple controller that adds a string to a List<string>
brainPageController.AddGoal(parameter);
}
private void addButton_Click(object sender, RoutedEventArgs e)
{
this.Frame.Navigate(typeof (GoalsInfo));
}
// VARIABLES DECLARATION
private PageController brainPageController;
}
public sealed partial class GoalsInfo : WinGoalsWIP.Common.LayoutAwarePage
{
public GoalsInfo()
{
this.InitializeComponent();
this.brainPageController = new PageController();
}
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
}
protected override void SaveState(Dictionary<String, Object> pageState)
{
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
brainPageController.AddGoal(nameTextBox.Text);
this.Frame.Navigate(typeof(MainPage), nameTextBox.Text);
}
// VARIABLES DECLARATION
PageController brainPageController;
}
答案 0 :(得分:11)
Frame.Navigate(typeof(MainPage), nameTextBox.Text);
然后在OnNavigatedTo MainPage
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string text = e.Parameter as string;
if (text != null) {
//Do your stuff
}
}
如果要缓存MainPage,请执行此操作
public MainPage()
{
this.InitializeComponent();
//This will cache your page and every time you navigate to this
//page a new page will not be created.
this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;
this.brainPageController = new PageController();
// add items from the List<String> to the listBox
listGoals.ItemsSource = brainPageController.GetListGoals();
}
答案 1 :(得分:1)
试试这个我希望有所帮助