#c# #string #xaml #concatenation #binding-context
#c# #строка #xaml #конкатенация #привязка-контекст
Вопрос:
У меня есть это:
<Label Text="{Binding Height}" AbsoluteLayout.LayoutBounds=".9,.17,-1,-1" TextColor="White" AbsoluteLayout.LayoutFlags="PositionProportional" HorizontalTextAlignment="Center" HorizontalOptions="Center" FontSize="Medium"/>
Очевидно, что {Высота привязки} занимает весь текст.
Привязка в настоящее время является двойной и должна оставаться такой, мне просто нужно объединить «m» в конце для представления метров.
Я пробовал {Высота привязки} m и {Высота привязки m}, но, очевидно, xaml работает не так, как работала бы обычная конкатенация строк.
Ответ №1:
Попробуйте использовать StringFormat
. Вот так:
Text="{Binding Height, StringFormat='{}{0}m'}"
Отредактировано для наглядности:
Вы можете написать все, что хотите, после {0}
аргумента.
Например, приведенное выше приведет к таким значениям, как 25m, 10m и т.д.
Вы можете написать что-то вроде этого, если хотите:
Text="{Binding Height, StringFormat='{}{0} is a good number.'}"
Приведенное выше приведет, например:
10 is a good number.
Комментарии:
1. Это сработало отлично! Спасибо. Как бы мне добавить интервал? Я попытался просто добавить пробел между <…}m’>, изменив его на. <…} m’> но это не сработало … он по-прежнему печатался без пробела.
2. Привет, я отредактировал свой ответ. Дайте мне знать, если это ответит на ваш вопрос.
3. Отлично, спасибо. Может быть, тогда мне просто нужно было почистить свою программу. он не читал пробел. Однако я сделал еще одну строку для веса и ввел kg вместо m, и это сработало отлично.
Ответ №2:
Вы пробовали StringFormat
?
<Label Text="{Binding Height, StringFormat={0}m}"
Комментарии:
1. К сожалению, этот оставил красные волнистые линии под текстом на странице xaml, которая не будет запускаться