Как динамически установить всплывающую подсказку для текстового блока в dataTemplate? - PullRequest
2 голосов
/ 11 января 2012

Каждая запись в моем списке имеет шаблон ниже. Как программно установить всплывающую подсказку для цены и для ProductName? Какие идентификаторы я могу использовать? Обратите внимание, что я хочу различить 2 элемента: Price и ProductName и отображать разные всплывающие подсказки для каждого элемента, даже если они принадлежат одной записи в списке. Как видите, установить всплывающую подсказку в xaml (как видно из цены ниже) просто. Но мне нужна гибкость, чтобы установить его динамически. Спасибо.

<DataTemplate>
    <DockPanel >
        <TextBlock DockPanel.Dock="Left" Text = "{Binding ProductName}" />
        <TextBlock Text="   " />
        <TextBlock Text = "{Binding Price}" ToolTip="Price" />
    </DockPanel>
</DataTemplate>

Ответы [ 2 ]

4 голосов
/ 11 января 2012

Вы можете привязать всплывающую подсказку (можно связать практически любое свойство), чтобы при назначении этому свойству пользовательский интерфейс обновлялся.Лучше всего было бы создать свойство где-нибудь (например, объект, у которого есть свойство Price) и связать его с этим объектом.Просто убедитесь, что вы используете DependencyProperty или INotifyPropertyChanged.

<DataTemplate>
    <DockPanel>
       <TextBlock DockPanel.Dock="Left" Text = "{Binding ProductName}" />
       <TextBlock Text="   " />
       <TextBlock Text = "{Binding Price}" ToolTip="{Binding PriceTooltipProperty}" />
    </DockPanel>
</DataTemplate>
1 голос
/ 11 января 2012

Вы можете использовать конвертер, конвертеры принимают тип объекта, затем вы можете проверить, что это такое?то есть строку или число и вернуть строку с любой всплывающей подсказкой.

{Binding Path=Price, Converter={StaticResource ObjectToTooltipConverter}}

Тогда ваш конвертер может выглядеть примерно так.

public class ObjectToTooltipConverter: IValueConverter {

 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
  if(value is Decimal)
  {
    return "The value was a decimal";
  }
  if(value is String)
  {
    return "The value was a string";

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...