2015-06-09 9 views
7

Ho un blocco di testo che sta visualizzando la data/ora. L'aspetto dell'orologio può essere diverso su alcuni controlli dell'applicazione, per quanto riguarda il colore e forse il carattere, ma voglio che la data e l'ora abbiano lo stesso formato.In che modo posso o posso utilizzare una risorsa statica per StringFormat su un TextBlock?

so di poter impostare la proprietà StringFormat in questo modo:

<TextBlock Text="{Binding CurrentDateTime, StringFormat='{}{0:h\:mm tt}'}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" /> 

Tuttavia, non so come tirare il formato stringa di fuori in un dizionario risorse di stringa separata. Ho provato a fare qualcosa di simile al seguente, ma la stringa di data e ora non appare affatto.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:system="clr-namespace:System;assembly=mscorlib"> 
    <system:String x:Key="MyFormat">{}{0:h\:mm tt}</system:String> 
</ResourceDictionary> 

<!-- In another file --> 
<TextBlock Text="{Binding CurrentDateTime, StringFormat={StaticResource MyFormat}}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" /> 

Questo può essere fatto a tutti? Se é cosi, come?

Grazie

risposta

12

Ti sembra avere solo per rimuovere il {}:

<system:String x:Key="MyFormat">{0:h\:mm tt}</system:String> 

Il {} è richiesto per i valori degli attributi per impedire loro di essere interpretato come un'estensione di markup. Tuttavia, con la sintassi degli elementi di proprietà, non è più necessario il {} perché le parentesi graffe non hanno un significato speciale in quel contesto.

+0

Buona domanda, ottima risposta, mai saputo come fare questo. – Contango

+0

Grazie, ha funzionato. Sono sorpreso di non aver trovato una domanda al riguardo su SO. Forse l'ho perso –

Problemi correlati