I needed to show Date as "Year Year", I tried some solutions that I thought about, but they didnβt work, I searched a bit and finally found this question and StuartSmith answer. Based on his answer, I came up with a similar solution that works around the localization problem mentioned in Kubaskista's comment p>
@StuartSmith It will not work for German localization and, possibly, in some other regions due to the different data format. btw: any idea why the "value" in the converter cannot be converted to DateTime?
1- Determine the date selection in xaml, give it the name "FirstDatePicker", and then from the editing template Designer and select edit 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- Right-click on FlyoutButton β More Templates β Edit Created Content β Edit Copy.

3- Internal content template. We bind directly to the Date FirstDatePicker property and using StringFormatConverter you can format the date as you wish and redefine the culture.
<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- Add StringFormatConverter to the solution, do not forget to add it to the resource section of the page.
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 }
Note. You can change "CultureInfo.CurrentCulture" to a new culture ("ar-EG") as an example or use the language passed in the converter.
Finally, here is what I have in the resources section of the page
<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>