2

我有问题,我现在无法弄清楚。我正在尝试开发一个 Windows-8 风格的应用程序并且我坚持实现这个功能。

我有一个MainWindow,其中包含一个 ListBox 和一个 Button (可以说addButton)。

当我单击按钮时,我导航到一个新页面,让我们说AddCustomerPage with this.Frame.Navigate(typeof (AddCustomerPage));

AddCustomerPage有 1 个 textBox 和 1 个按钮(可以说doneButton。当我单击按钮时,我希望将 textBox 中的字符串添加到上一页的 ListBox 中。

这是我当前的功能: 1. 创建 MainWindow。

  1. 点击添加按钮

  2. AddCustomer 页面已创建。MainWindow 被破坏(问题)。

  3. 点击完成按钮

  4. 使用具有 1 个项目的 ListBox 创建 MainWindow 对象。

  5. 重复添加过程,我总是得到一个带有 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;
}
4

2 回答 2

12
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();
    }
于 2012-12-15T12:26:44.610 回答
1

试试这个我希望它有帮助

快速入门:在页面之间导航

于 2012-12-15T10:59:47.357 回答