Ответ 1
Вы пробовали:
<ToolTip>
<TextBlock Text="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}" />
</ToolTip>
У меня есть всплывающая подсказка со значением, заданным как:
Value="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}"
Инструмент отображается как:
72
Но я ожидаю, что это будет:
Зарезервировано (доля: 72%)
Что не так с моей привязкой?
Вы пробовали:
<ToolTip>
<TextBlock Text="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}" />
</ToolTip>
ToolTip - это элемент управления контентом, что означает, что на нем нет модели отображения. Это продемонстрировано в более раннем ответе @deccyclone, который устанавливает контент в TextBlock. Поскольку TextBox предназначен для отображения текста, свойство привязки StringFormat работает так, как объявлено. Кнопка является еще одним примером этого. (Оба получаются из ContentControl)
Если вы устанавливаете содержимое ToolTip в строку, строка отображается, потому что в ToolTip встроен преобразователь, если тип данных - строка. Если вы хотите воспользоваться встроенным конвертером строк, вам необходимо установить формат с помощью свойства ContentStringFormat.
<ToolTip
Content="{Binding Path=Value}"
ContentStringFormat="{}{0:F2} M"
/>
BTW, подсказка о том, когда использовать StringFormat или ContentStringFormat, - это свойство, которое элемент управления предоставляет для установки отображаемого текста. Текстовое свойство → использовать StringFormat Свойство Content → use ContentStringFormat
Вам не нужно выходить из скобок. Попробуйте это (я хотел бы поместить формат в одинарные кавычки):
Value="{Binding Path=DataItem.EquitySold, StringFormat='Reserved (Equity Share: {0}%)'}"
Я предполагаю, что это то, что поддерживает ваш тип данных - насколько я знаю, он передается в качестве аргументов для IFormattable.
<Button.ToolTip>
<TextBlock Text="{Binding Path=ToggleText, StringFormat={}{0} Text}"/>
</Button.ToolTip>
Кнопка внутри DataGridTemplateColumn
Для кого-то еще, что здесь заканчивается в несколько иной ситуации, это было желательно для установки всплывающей подсказки StringFormat
через Style
:
<DataGridTextColumn Header="Amount" CanUserSort="True"
Binding="{Binding Amount,Mode=OneWay}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding JournalEntryId, StringFormat='Reserved (Equity Share: \{0\}%)'}" />
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
Try
StringFormat=Reserved (Equity Share: {0:P0})