【发布时间】:2015-06-16 17:20:45
【问题描述】:
我第一次尝试创建 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));
}
}
}
感谢您的帮助。
【问题讨论】:
-
有什么异常?顺便说一句,我在一个商业 Windows Phone 应用程序上工作,其中导航到的页面只是在主页上激活的控件。按下后退按钮只是将可见性更改为隐藏。
-
我不确定如何获得实际的异常。每当我尝试返回时,应用程序崩溃并且 VS 会转到“App.gics”页面并突出显示“#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION UnhandledException += (sender, e) => { if (global::System.Diagnostics .Debugger.IsAttached) global::System.Diagnostics.Debugger.Break(); }; #endif" 有什么地方可以更好地描述异常吗?
-
">GuidedWorkout.exe!GuidedWorkout.App.InitializeComponent.AnonymousMethod__2(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e) Line 50 C#"
-
您需要向我们提供 e 参数的详细信息。您在此处提供给我们的代码并没有多大帮助,因为它是一般的 Unhandled Exception sn-p。
-
不要将代码放在 cmets 中,您可以使用该信息主动编辑您的帖子。然后只需在“@omegaman 查看我更新的帖子”之类的评论中喊出某人来回复他们作为评论答案。
标签: c# xaml windows-phone-8.1