我需要显示日期为“年月日”,我尝试了一些解决方案,我想到了,但他们没有工作,找遍了一点终于找到了这个问题,StuartSmith找到了答案。 基于他的回答,我想出了通过Kubaskista
周围评论中提到本地化问题工作@StuartSmith它不会对德国本地化和可能是由于不同的数据格式,其他一些地区的工作类似的解决方案。顺便说一句:任何想法为什么转换器中的“价值”不可能转换成日期时间?
1-定义xaml中的Date Picker,给它命名为“FirstDatePicker”,然后从Designer编辑模板中选择edit a copy。
<DatePicker x:Name="FirstDatePicker" VerticalAlignment="Top" Grid.Row="1" Margin="0,12,0,0" CalendarIdentifier="GregorianCalendar" DayVisible="False" Padding="0" Style="{StaticResource DatePickerStyle}" RequestedTheme="Light"/>
2 - 右键点击FlyoutButton - >其他模板 - >编辑生成的内容 - >编辑副本。
3-里面的内容模板,我们将直接绑定到FirstDatePicker日期财产,使用StringFormatConverter你的,你希望可以格式化日期和覆盖文化也。
<DataTemplate x:Key="DateFormatTemplate">
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Date, ConverterParameter=MMMM yyyy, Converter={StaticResource DateFormatConverter}, ElementName=FirstDatePicker, Mode=OneWay}" VerticalAlignment="Top"/>
</Grid>
</DataTemplate>
4-将StringFormatConverter添加到解决方案,不要忘记将其添加到页面的资源部分。
public class DateFormatConverter : IValueConverter
{
#region IValueConverter Members
public object Convert (object value, Type targetType, object parameter, string language)
{
if(!(value is DateTime || value is DateTimeOffset) || parameter == null) return value;
if(value is DateTime)
{
var date = (DateTime)value;
return date.ToString(parameter.ToString(), CultureInfo.CurrentCulture);
}
else
{
var date = (DateTimeOffset)value;
return date.ToString(parameter.ToString(), CultureInfo.CurrentCulture);
}
}
public object ConvertBack (object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
#endregion
}
注意:您可以更改“CultureInfo.CurrentCulture”新文化(“AR-EG”)作为例子或通过转换器使用的语言。
最后,这里是我在页面
<converters:DateFormatConverter x:Key="DateFormatConverter"/>
<x:Double x:Key="ContentControlFontSize">20.26</x:Double>
<FontWeight x:Key="PhoneButtonFontWeight2">Semibold</FontWeight>
<DataTemplate x:Key="DateFormatTemplate">
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Date, ConverterParameter=MMMM yyyy, Converter={StaticResource DateFormatConverter}, ElementName=FirstDatePicker, Mode=OneWay}" VerticalAlignment="Top"/>
</Grid>
</DataTemplate>
<Style x:Key="DatePickerStyle" TargetType="DatePicker">
<Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
<Setter Property="FontSize" Value="{ThemeResource ContentControlFontSize}"/>
<Setter Property="Foreground" Value="{ThemeResource DatePickerForegroundThemeBrush}"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DatePicker">
<StackPanel x:Name="LayoutRoot" Margin="{TemplateBinding Padding}">
<ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Margin="0,0,0,-3" Style="{StaticResource HeaderContentPresenterStyle}"/>
<Button x:Name="FlyoutButton" BorderBrush="{TemplateBinding Foreground}" BorderThickness="2.5" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="Stretch" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsEnabled="{TemplateBinding IsEnabled}" Padding="12,10" Margin="0" ContentTemplate="{StaticResource DateFormatTemplate}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
一个downvote并没有发表评论的资源部分....是这个地方变成reddit的?这个问题有什么问题? – DaveDev 2014-10-17 14:10:33
大声笑不要尝试和理解downvote巨魔。只是不要目光接触,他们会消失。 – 2014-10-17 17:27:04
这就是说,你有没有尝试编辑DatePicker模板? – 2014-10-17 17:28:12