Wpf - привязка stringformat на ярлыке с использованием строкового литерала
Я привязал всплывающую подсказку элемента управления слайдера к свойству Value и я пытаюсь использовать StringFormat, чтобы он отображал текущее значение {0} из 10 ", где {0} - свойство Value. Ниже приведена одна из тех вещей, которые я пробовал, пытаясь понять это.
<Slider.ToolTip>
<Label>
<Label.Content>
<Binding StringFormat="Current Value {0} of 10"
ElementName="DebugLevelSlider"
Path="Value" />
</Label.Content>
</Label>
</Slider.ToolTip>
У меня возникают проблемы с поиском примеров онлайн о том, как использовать stringformat со строковыми литералами, такими как мои выше. Я вижу много преобразований формата даты/времени/валюты в формате stringformat. Я думаю, что у меня есть способ сделать это с помощью многозадачности, но это просто лишний объем работы, чем необходимо. Я надеюсь, что для форматирования строкового литерала мне все равно не нужно писать настраиваемый конвертер.
В моем приложении я нахожу, что использую много дополнительных ярлыков рядом с элементами, поэтому получение понимания в строчном формате, надеюсь, позволит мне устранить некоторые из этих ненужных меток.
Ответы
Ответ 1
В ToolTip вы можете проверить Связывание WPF с StringFormat не работает на подсказках.
Что касается StringFormat, который вы указали выше, вам нужно избежать строки.
StringFormat="{}Current Value {0} of 10"
Вот куча примеров StringFormat.
http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx
Ответ 2
Label.Content
- объект, поэтому вы не можете использовать Binding.StringFormat
там, где целевой тип привязки должен быть string
, чтобы он работал.
Два подхода: используйте TextBlock
вместо Label
и привяжите свойство Text
.
Используйте Label.ContentStringFormat i.e.
<Label ContentStringFormat="Current Value {0} of 10" Content={Binding ...} />
Вам нужно только избежать string
с помощью {}
, если ваш первый символ - {