Ho il seguente XAML:Perché non posso utilizzare CultureInfo.CurrentCulture in XAML in fase di progettazione?
<TextBlock Text="{Binding Source={x:Static s:DateTime.Now}, StringFormat=Date: {0:dddd, MMMM dd}}"/>
s:DateTime.Now
con xmlns:s="clr-namespace:System;assembly=mscorlib"
funziona bene in fase di esecuzione, nonché in modalità di progettazione (Visual Studio 2015 Enterprise).
Ma se provo lo stesso con CultureInfo.CurrentCulture
, allora questo funziona solo a runtime e mi dà un errore nella modalità di progettazione (xmlns:c="clr-namespace:System.Globalization;assembly=mscorlib"
):
<TextBlock Text="{Binding Source={x:Static s:DateTime.Now}, ConverterCulture={x:Static c:CultureInfo.CurrentCulture}, StringFormat=Date: {0:dddd, MMMM dd}}"/>
Io non sto cercando una soluzione alternativa. Sto solo cercando di capire la differenza tra DateTime.Now
e CultureInfo.CurrentCulture
e perché uno di loro funziona e l'altro no.
Che errore ti dà? Sei sicuro che la differenza sia tra 'DateTime.Now' e' CultureInfo.CurrentCulture', piuttosto che la differenza tra 'Source' e' ConverterCulture'? (Strano come sarebbe, prova a specificare 'Source' come' CultureInfo.CurrentCulture', solo per vedere se questo dà ancora un errore.) –
I copia/incolla i due bit XAML che hai condiviso in un progetto vuoto, e funziona bene , in entrambe le modalità di progettazione e in fase di esecuzione. Si prega di fornire una buona [mcve] che riproduca in modo affidabile il problema. Si prega inoltre di essere più specifici su quale problema si sta avendo; fornire il testo del messaggio di errore _exact_ e il contesto in cui si verifica l'errore. –
Riproduce il problema sulla mia estremità. Ho anche provato cosa suggerito da @JonSkeet e il problema è effettivamente 'CurrentCulture'. A proposito, la documentazione di 'CurrentCulture' dice:' Un oggetto che rappresenta la cultura usata dal thread corrente. Non è questo il problema? Che non c'è "filo corrente" in fase di progettazione. 'DefaultThreadCurrentCulture',' InstalledUICulture', 'InvariantCulture' e' DefaultThreadCurrentUICulture' funzionano correttamente. Solo "CurrentCulture" e "CurrentUICulture" stanno funzionando. –