【问题标题】:My DatePicker doesn't have the SelectedDate properties in wp8我的 DatePicker 在 wp8 中没有 SelectedDate 属性
【发布时间】:2014-02-15 08:18:45
【问题描述】:

我的工具包有问题:DatePicker,没有 SelectedDate 属性。我试过把

xmlns:sys="clr-namespace:System;assembly=mscorlib" 

在 XAML 中。我该怎么解决。我正在使用 Windows Phone 8。

<grid>
<toolkit:DatePicker x:Name="datePicker" Foreground="Gray" Header=""  Margin="0,364,10,362" Value="10/10/2010" ValueChanged="datePicker_ValueChanged"/>
</grid>

【问题讨论】:

  • 考虑将 wpf 标签替换为 silverlight。 windows phone 基于 silverlight,而不是 wpf。这个事实很重要,因为并非所有适用于 wpf 的解决方案都适用于 silverlight/wp。例如,silverlight/wp 没有 x:Static 标记扩展。

标签: c# windows-phone-8 datepicker


【解决方案1】:

DateTime.Now 是静态属性,因此您可以使用 x:Static 标记扩展名进行绑定,如下所示:

<toolkit:DatePicker xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    Value="{x:Static sys:DateTime.Now}"/>

sys 对应于声明 DateTime 的 System 命名空间。


我希望StaticResource 存在于 WP8 中。如果是上面也可以这样模拟:

<Grid xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <Grid.Resources>
     <sys:DateTime x:Key="CurrentDateTime"/>
  </Grid.Resources>
  <toolkit:DatePicker Value="{Binding Path=Now,
                        Source={StaticResource CurrentDateTime}, Mode=OneWay}"/>

</Grid>

PS - 在任何你喜欢的地方定义资源(我使用 Grid 来描述仅在父元素的某处声明它)。


最后,如果上面似乎不起作用(理想情况下应该有),我建议在您的 DataContext 类中使用 wrapper 属性,该属性将返回今天的 DateTime 并与之绑定

    public DateTime CurrentDateTime
    {
        get
        {
            return DateTime.Now;
        }
    }

并直接与之绑定:

<toolkit:DatePicker Value="{Binding Path=CurrentDateTime, Mode=OneWay}"/>

【讨论】:

  • 感谢您的回答,但我遇到了更多问题。它说找不到他键入“x:静态”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。并且 XML 命名空间中不存在标记“静态”。
  • 我以为你在这里谈论的是WPF,因为问题被标记了。但是,您可以模仿x:Static,如文章here 中所述。
  • 我是!但我不知道我的 WP8 XAML 中发生了什么,我尝试了很多方法来解决这个问题,但似乎没有解决方案。我尝试使用 x:Static 但缺少命名空间,但是当我找到解决方案时,它说 Static 仅适用于 Silverlight。我很困惑,请有人向我解释发生了什么?谢谢。
  • 我已经用另一种解决方法编辑了我的答案。看看这是否适合你。!!
  • 感谢您的帮助,但发现了另一个问题。当我尝试您的最新解决方案时,语法没有问题。但是当我尝试运行它时会出现问题。它将我重定向到中断或继续窗口。然后我尝试从 中删除 xmlns:sys,因为我上面有相同的 xmlns:sys。但是问题依然存在,就像运行时错误什么的。
【解决方案2】:

默认情况下,WP8 工具包 DatePicker 将当前日期显示为选定日期。 如果要设置任何其他日期,可以使用 DatePicker 的value 属性进行设置。 如果您想检索选定的日期,则可以使用DataPicker.Value 并将其转换为您的需要。

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多