2010-09-30 29 views
22

Những phiên bản làm việc như mong đợi:WPF: vấn đề StringFormat với một Label

<DataGridTextColumn Header="Total Units" Binding="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/> 

<TextBlock Text="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/> 

Khi tôi thử nó với một nhãn, các StringFormat được iqnored và tôi nhận được "123,000000" thay vì "123".

<Label Content="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/> 

Tổng số là một số thập phân.

Vì vậy, những gì đang xảy ra?

Trả lời

47

Bất kỳ thứ gì có thuộc tính Content đều có đặc tính ContentStringFormat đặc biệt bạn phải sử dụng thay vì chỉ định StringFormat trong Ràng buộc.

Như thế này:

<Window.Resources xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <sys:Int16 x:Key="MyValue">100</sys:Int16> 
</Window.Resources> 

<StackPanel DataContext="{StaticResource MyValue}"> 

    <!-- using Label --> 
    <Label Content="{Binding}" ContentStringFormat="{}{0:C}" /> 

    <!-- using TextBlock--> 
    <TextBlock Text="{Binding, StringFormat={0:C}}" /> 

</StackPanel> 
+0

Đó là nó, cảm ơn bạn. –

Các vấn đề liên quan