因此,在开发适用于Windows Phone 8的应用程序时,我遇到了使用该工具包的以下问题。
编辑:以下是重现问题的页面的完整代码:
<phone:PhoneApplicationPage
x:Class="TestPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<toolkit:DatePicker x:Name="MyDate" />
</Grid>
</phone:PhoneApplicationPage>
这看起来正确,并允许用户选择日期,但永远不会更新其值。点击它后,您将看到日期选择页面。无论你在这个页面上做什么,当你返回时,DatePicker都会被设置回今天的日期。
我在另一个页面上成功使用了DatePicker。这是在我遇到此问题的特定页面上。
我真正的问题是,如何调试此元素的行为?如何在选择其他日期时确定导致元素不更新的原因?
编辑2: 显然,我的应用程序还有其他功能。因此我需要调试一个正在运行的元素,或者至少找出它为什么没有按照我的预期行事。
答案 0 :(得分:3)
所以我遇到的问题是我的页面的OnNavigatedTo事件中有初始化代码。
每次使用DatePicker选择日期时,实际上都是导航到新页面。确认日期选择后,您将导航回原始页面。由于我的初始化代码在OnNavigatedTo事件中,这意味着每次选择日期时页面都会重新初始化。
答案 1 :(得分:0)
根据具体情况,我通常会检查OnNavigaterTo事件中的e.NavigationMode参数,并在我从listpicker / datepicker返回时返回:
if (e.NavigationMode == NavigationMode.Back)
return;