2015-06-09 30 views
7

Tarih/saat görüntüleyen bir metin bloğum var. Saatin görünümü, uygulamadaki bazı denetimlerde farklı olabilir, ancak renk ve yazı tipi olabilir, ancak tarih ve saatin aynı biçime sahip olmasını istiyorum.Bir TextBlock'ta StringFormat için nasıl statik kaynak kullanabilirim veya kullanabilirim?

ben şöyle StringFormat özelliğini ayarlayabilirsiniz biliyorum:

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

Ancak, ayrı bir dize kaynak sözlüğüne dışarı dize biçimi nasıl alındığını bilmiyorum. Aşağıdaki gibi bir şey yapmaya çalıştım, ancak tarih saat dizisi hiç görünmedi.

<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" /> 

Bu işlem hiç yapılabilir mi? Öyleyse nasıl? Seni görünür

Teşekkür

cevap

12

sadece kaldırmak zorunda {}:

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

{} bir biçimlendirme uzantısı olarak yorumlanabilir engellemek için özellik değerleri için gereklidir. Ancak, özellik öğesi sözdizimi ile artık {}'a gereksiniminiz yoktur, çünkü bu ayraçlarda küme parantezlerinin özel bir anlamı yoktur.

+0

İyi soru, harika bir cevap, bunu nasıl yapacağını hiç bilmiyordu. – Contango

+0

Teşekkürler, işe yaradı. Bu konuda SO ile ilgili bir soru bulamadığım için şaşırdım. Belki onu özlemişimdir. –

İlgili konular