gpt4 book ai didi

c# - 如何在 Windows 8 风格应用程序中将对象从一个框架传递到另一个框架

转载 作者:行者123 更新时间:2023-11-30 19:06:09 26 4
gpt4 key购买 nike

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

我有一个 MainWindow,它包含一个 ListBox 和一个 Button(比方说 addButton)。

当我点击按钮时,我导航到一个新页面,假设 AddCustomerPage with this.Frame.Navigate(typeof (AddCustomerPage));

AddCustomerPage 有 1 个文本框和 1 个按钮(比方说 doneButton。当我单击按钮时,我希望将文本框中的字符串添加到上一个列表框中页面。

这是我当前的功能:1. 主窗口创建。

  1. 点击添加按钮

  2. AddCustomer 页面已创建。 MainWindow 被销毁(问题)。

  3. 点击完成按钮

  4. MainWindow 对象是使用包含 1 个项目的 ListBox 创建的。

  5. 重复添加过程,我总是得到一个主窗口和一个包含 1 个项目的列表框。

感谢您的帮助。这是代码:

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;
}

最佳答案

Frame.Navigate(typeof(MainPage), nameTextBox.Text);

然后在MainPage的OnNavigatedTo中

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();
}

关于c# - 如何在 Windows 8 风格应用程序中将对象从一个框架传递到另一个框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13890836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com