2013-06-11 22 views

cevap

3

Metin doğru hizalama olması ve kullanıcı sistem ayarlarına bağlı olarak ondalık nokta/virgülle 105.00 veya 19.95 gibi bir formata sahip zorlayan bu

<TextBox TextAlignment="Right" 
     Text="{Binding Price, 
      UpdateSourceTrigger=PropertyChanged, 
      StringFormat='#.00', 
      ConverterCulture={x:Static sysglb:CultureInfo.CurrentCulture}}"/> 

gibi bir şey kullanabilirsiniz. Ayrıca, varsa dize formatına bir para birimi işareti de ekleyebilirsiniz.

Düzeltme: Üzgünüm, ad alanlarının otomatik olarak içe aktarılmasıyla şımartıldım. Üst düzey elemanı olarak (UserControl'ın, Pencere, ...) ekleyin:

<UserControl x:Class="..." 
    ... 
    xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib" 
    ... 
> 
+0

sayesinde ?:, ben bu kodu deneyin, ama neden Ben sysglb kullanamam: CultureInfo.CurrentCulture} * aptal soru için üzgünüm>. < – user2473454

+0

Eğer ReSharper eklentisini kullanmıyorsan (Hey! Paraya değer! Tamam, önyargılıyım, çünkü diğer ürünleri kullanıyorum) şirket ...), ad alanları otomatik olarak içe aktarılmaz. Cevabımı ekleyeceğim. – eMko

+0

@ user2473454 Aynı şeyi alıyorum ... – AndyUK

10

böyle bir şey mi arıyorsunuz yardım için

<TextBox Text="{Binding Path=Txt, StringFormat=C}"/> 
+0

Bu, kullanıcı sistemi ayarına bağlı olarak para birimi işaretini gösterecektir; bu, veri tabanındaki para birimiyle uyuşmak zorunda kalmaz. – eMko

+0

Hangi veritabanı? ;-) – rhe1980

+1

veya sahip olduğunuz veri kaynağı :). Çözümünüz madenden kesinlikle daha temizdir (oylama), ancak kullanıcı için hangi para birimi işaretinin görüntülendiğini kontrol etmediğiniz ve bu nedenle de veriye uymak zorunda olmadığınız için bir eksiği vardır. – eMko