2013-03-05 4 views
7

У меня есть ComboBox в моем приложении WPF. Использование ниже кода можно установить ToolTip в качестве выбранного значения:Как установить всплывающую подсказку со списком WPF на основе выбранного значения?

ToolTip="{Binding Path=SelectedValue, RelativeSource={RelativeSource Self}}" 

Но если мне нужно установить отдельное значение для ToolTip на основе ComboBox выбора, следующий код не работает:

<controls:ComboBoxEx.Style> 
    <Style TargetType="ComboBox" BasedOn="{StaticResource basicStyle}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=SelectedValue, RelativeSource={RelativeSource Self}}" Value="DAW"> 
       <Setter Property="ToolTip" Value="abc"/> 
      </DataTrigger> 

      <DataTrigger Binding="{Binding Path=SelectedValue, RelativeSource={RelativeSource Self}}" Value="generic"> 
       <Setter Property="ToolTip" Value="def"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</controls:ComboBoxEx.Style> 

Любой помощь будет оценена, спасибо.

+0

Кому принадлежит ваша ComboBox? Список строк? Из интереса попробуйте использовать SelectedItem, а не SelectedValue. –

+0

Я пробовал оба из них :( – Relativity

ответ

5

Я не уверен, если я правильно понимаю, но если вы используете Style вы не должны использовать DataTrigger или RelativeSource={RelativeSource Self}}" для доступа SelectedValue, вы должны быть в состоянии получить доступ через Trigger используя Property

<Style TargetType="ComboBox"> 
    <Style.Triggers> 
     <Trigger Property="SelectedValue" Value="DAW"> 
      <Setter Property="ToolTip" Value="abc"/> 
     </Trigger> 
     <Trigger Property="SelectedValue" Value="generic"> 
      <Setter Property="ToolTip" Value="def"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

Я пробовал это ... но не работал ... Если я поместил следующий сеттер по умолчанию .. он показывает мне правильные значения DAW и generic, когда я их выбираю ... но внутри он не работает. – Relativity

+0

У вас есть' SelectedvaluePath', установленный на 'ComboBox' –

+0

нет .. У меня нет этого – Relativity

2

связать всплывающую подсказку с дисплеем свойства выбранного элемента в данном случае я имею отображаемое имя свойства, если у вас есть declaritive элементы COMBOBOX то, что было бы

ToolTip="{Binding Path=SelectedItem.Content,ElementName=cmbbox_years}" 

еще для нестандартного объекта ниже код будет работать

<ComboBox 
    Name="cmbbox_years" 
    DisplayMemberPath="display" 
    SelectedValuePath="value" 
    ItemsSource="{Binding Years}" 
    SelectedItem="{Binding YearSelectedItem}" 
    ToolTip="{Binding Path=SelectedItem.display,ElementName=cmbbox_years}"/>