Solo quería agregar que la respuesta de loraderon funciona muy bien en la mayoría de los casos. Cuando pongo la siguiente línea de código en mi App.xaml.cs, las fechas en mis TextBlocks están formateadas en la cultura correcta.
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Digo 'la mayoría de los casos' Por ejemplo, esto funcionará de inmediato:
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}}" />
--> "16 mei 2013" (this is in Dutch)
... pero al usar Run's en un TextBlock, DateTime se formatea en la cultura predeterminada.
<TextBlock>
<Run Text="Datum: " />
<Run Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}, Mode=OneWay}" />
</TextBlock>
--> "Datum: 16 may 2013" (this is in English, notice the
name of the month "may" vs. "mei")
Para que esto funcione, necesitaba la respuesta de Gusdor , es decir, agregar ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} al enlace.
<TextBlock>
<Run Text="Datum: " />
<Run Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}, Mode=OneWay}" />
</TextBlock>
--> "Datum: 16 mei 2013" (=Dutch)
Espero que esta respuesta adicional sea de utilidad para alguien.