Подтвердить что ты не робот

WPF: проблемы с StringFormat с меткой

Эти версии работают как ожидалось:

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

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

Когда я пытаюсь использовать его с меткой, StringFormat является iqnored, и я получаю "123.000000" вместо "123".

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

TotalUnits - это десятичное число.

Итак, что происходит?

4b9b3361

Ответ 1

Все, что имеет свойство Content, имеет специальное свойство ContentStringFormat, которое вы должны использовать, а не указание StringFormat в Binding.

Вот так:

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