2015-10-19 3 views
1

У меня есть поле, которое содержит значение percantage как десятичное.WPF XAML StringFormat. Escape%

Текстовый блок привязан к этому полю, и я хочу отобразить его с символом%.

Например: Если MyField = 5,0, то текст должен отображаться как "5,00%"

Это мое связывание:

Text="{Binding Path=myfield, StringFormat=0.00## \%}" 

, который в настоящее время отображается "500,00%"

В '\', похоже, не ускользает от «%».

Как я могу избежать «%» в XAML StringFormat?

+0

Единственное, что я могу думать о том, что есть другой нулевой ширины символов между символом обратной косой черты и '%' (однако маловероятно, что может появиться). – ChrisF

ответ

1

Похоже, что мы должны удвоить слэш, я думаю, что сам \ нужно экранировать, чтобы помочь XAML компилятор понимает, что это один \, прежде чем он объединяется с % сделать идеальный побег %, который будет пониматься как буквенная строка % в StringFormat (не XAML компилятором):

Text="{Binding Path=myfield, StringFormat=0.00## \\%}" 

Итак, технически у нас есть 2 переводчика здесь, один - компилятором XAML и один - двигателем StringFormat. Обратите внимание, что \ также используется для вызова некоторых специальных символов в XAML, таких как { и }.

Указав индекс параметра в явном виде, вы можете сделать это:

Text="{Binding Path=myfield, StringFormat=\{0:0.00## \\%\}}" 
0

Вы можете попробовать его в кавычки вместо:

Text="{Binding Path=myfield, StringFormat=0.00## '%'}" 
+1

Я даже не собираюсь компилировать. – apc

0

Найден ответ на мою проблему, однако это не укомплектовать ответить на мой вопрос:

Text="{Binding Path=myfield, StringFormat={}{0:0.00##} %}" 

Это говорит для формата индекс параметра 0, в «0.00 ##» затем добавьте «%».

В то время как это дает желаемого результата это не объясняет, как избежать% в виде строки для параметра 0.

Смежные вопросы