gpt4 book ai didi

c# - 在 Windows Phone 8.1 应用程序中导航回主页会导致异常

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:58 24 4
gpt4 key购买 nike

我第一次尝试创建 Windows Phone 应用程序,但遇到了一些问题。

我的程序有两个页面 - 主页有一个锻炼列表(目前已预先填充)和三个按钮。当按下“添加”按钮时,您将导航到第二个页面,其中有一个文本框和另一个“添加”按钮。我试图让添加按钮更新锻炼列表(这似乎有效)并导航回 MainPage。

我尝试了两种方法来实现这一点——我在“this.Frame.Navigate(typeof(MainPage));”中添加了到添加按钮。我还添加了一个“按下后退按钮”处理程序以返回到最后一页。

启用导航代码时按“添加”按钮每次都会导致异常。如果您导航到该页面并在点击添加按钮之前点击后退按钮,该页面将毫无问题地返回。但是,如果您点击“添加”然后尝试返回,则会再次引发异常。

这是主页的代码。

namespace GuidedWorkout
{


public sealed partial class MainPage : Page
{
public static List<string> allWorkouts = new List<string>();

public string textInfo { get; set; }
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;

Workouts Workout = new Workouts("Chest Day");
Workouts Workout3 = new Workouts("Leg Day");
Workouts workout2 = new Workouts("Arms Day");
allWorkoutsList.ItemsSource = allWorkouts;
}


/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{

}

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//this.allWorkoutsList.ItemContainerGenerator.ContainerFromItem();
//textInfo = (sender as ListBox).SelectedItem.ToString();
//textInfo = lbi.Content.ToString();
//this.titleBlock.Text = textInfo;
}



private void addWorkoutButton_Click(object sender, RoutedEventArgs e)
{
this.Frame.Navigate(typeof(GuidedWorkout.AddWorkout));
}
}

这是第二页的代码。

namespace GuidedWorkout
{

public sealed partial class AddWorkout : Page
{
public AddWorkout()
{
this.InitializeComponent();
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}

void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if(rootFrame != null && rootFrame.CanGoBack)
{
rootFrame.GoBack();
e.Handled = true;

}

}

private void addWorkoutButton_Tapped(object sender, TappedRoutedEventArgs e)
{
string wName;
wName = workoutTextBox.Text.ToString();
Workouts addedWorkout = new Workouts(wName);
MainPage.allWorkouts.Add(addedWorkout.workoutName);
//this.Frame.Navigate(typeof(GuidedWorkout.MainPage));

}
}

}

感谢您的帮助。

最佳答案

为什么不直接使用

    Frame.GoBack();

顺便说一句,我希望您确实意识到,当您在第二页上添加 WorkOut 并将其添加到 MainPage 中的列表时,它只是将其保存在该 session 的内存中。应用程序关闭的那一刻,您将丢失添加的数据。

我会建议您从更持久的表单中保存/读取数据,例如

就这么简单:

private IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings;

// to add
userSettings.Add("testdata");
userSettings.Save();

//to read
string xx = userSettings[“SomeValue”].ToString();

如果您想扩展,请考虑其他方式,例如数据库。

关于c# - 在 Windows Phone 8.1 应用程序中导航回主页会导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874138/

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