Dzisiejszy wpis bardziej dla mnie na przyszłość ale może ktoś skorzysta.

Ostatnio miałem potrzebę użycia takiej wartości StringFormat, aby jego wartość zaczynała się od spacji. Każdy kto kiedykolwiek bawił się tą właściwością wie, że takie coś jak poniżej nie spełni swojej roli.

<TextBlock FontSize=”16″ Text=”{Binding Value, Mode=OneWay, StringFormat= ({0}) dB}” x:Name=”test” />

Zauważcie spację pomiędzy znakiem = a ( w parametrze StringFormat. Wiem, że przykład może naciągany, ale w moim przypadku taki coś było konieczne.

Wynik jest jednak taki jak poniżej.

image

Jak zatem możemy uzyskać prowadzącą spację (leading space po polsku)? StringFormat obsługuje specjalną parę znaków {}. Wystarczy nasz StringFormat rozpocząć od tych znaków a nasza spacja będzie uwzględniona

<TextBlock FontSize=”16″ Text=”{Binding Value, Mode=OneWay, StringFormat={} ({0}) dB}” x:Name=”test” />

image

Tę samą sztuczkę musimy zastosować jeśli nasz StringFormat chcemy rozpocząć znakiem {.

W dokumentacji MSDN znak ten pojawia się w przykładzie, ale nie ma nic na jego temat – BindingBase.StringFormat property.