<toolkit:DatePicker Value="2/28/2010" />
我需要在我的日期选择器(WP8)中仅显示月份和年份。我试图以这种方式做到这一点,但它无法正常工作:
<toolkit:DatePicker Value="{Binding DateValue}" ValueStringFormat="{}{0:MM-yyyy}" />
我也需要DatePickerPage。
答案 0 :(得分:2)
您无法通过添加xaml字符串格式来实现此功能。要实现此类功能,您需要编辑工具包代码。为此,您可以从CodePlex下载开源代码。下载项目后,找到Date Picker类并编辑相关方法以删除日期。在发布模式下重新编译源代码,您可以使用该新的dll。
答案 1 :(得分:1)
如果您不想从Codeplex复制页面,则可以扩展页面并覆盖GetSelectorsOrderedByCulturePattern方法以更改日期选择器的可见性。在下面的示例中,我已将其修复为月份和年份,您可能不希望在您的版本中使用。此外,我还是按名称访问控件,因此请注意以后对WindowsPhone Toolkit的更新。
<toolkit:DatePickerPage
x:Class="MyApp.MonthYearPage"
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:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
</toolkit:DatePickerPage>
和
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using Microsoft.Phone.Controls.Primitives;
using System.Diagnostics;
using System.Windows.Media;
namespace MyApp
{
public partial class MonthYearPage : DatePickerPage
{
public MonthYearPage()
{
InitializeComponent();
}
protected override IEnumerable<LoopingSelector> GetSelectorsOrderedByCulturePattern()
{
var PrimarySelector = ((Grid)Content).FindName("PrimarySelector") as LoopingSelector;
var SecondarySelector = ((Grid)Content).FindName("SecondarySelector") as LoopingSelector;
var TertiarySelector = ((Grid)Content).FindName("TretiarySelector") as LoopingSelector;
var selectors = GetSelectorsOrderedByCulturePattern(
"DMY",
new char[] { 'Y', 'M', 'D' },
new LoopingSelector[] { PrimarySelector, SecondarySelector, TertiarySelector });
// Passing "DMY" in on the previous line makes sure the day selector
// is the first one in the enumeration. You may want to change the order
// of 'M' and 'Y' in that string for your needs or depending on region.
selectors.First<LoopingSelector>().Visibility = Visibility.Collapsed;
return selectors;
}
}
}
答案 2 :(得分:0)
{} {0:“Y”,“y”}有一个美好的一天:D(此处的信息 - &gt; http://msdn.microsoft.com/en-us/library/az4se3k1%28v=VS.95%29.aspx)
答案 3 :(得分:0)
这应该有助于格式化DateTimeButton内容以仅显示月份和年份:
<toolkit:DatePicker x:Name="datePicker" ValueStringFormat="{}{0:y}"/>
答案 4 :(得分:0)
根据位置展示格式,但可以通过以下方式避免这种情况:
<toolkit:DatePicker
Value="{Binding DateCard, Mode=TwoWay}"
ValueStringFormat="{}{0:MM'/'yy}" />
你会很开心!(dd'/'MM'/'yyy)