Как установить всплывающую подсказку WPF ComboBox на основе выбранного значения?
у меня есть ComboBox
в моем приложении WPF. Используя код ниже, я могу установить ToolTip
как выбранное значение:
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>
2 ответов
Я не уверен, правильно ли я понимаю, но если вы используете 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>
привязать подсказку к свойству отображения выбранного элемента в этом случае у меня есть отображение имени свойства, если у вас есть декларативные элементы ComboBox, то это будет
ToolTip="{Binding Path=SelectedItem.Content,ElementName=cmbbox_years}"
Else для пользовательского объекта ниже кода будет работать
<ComboBox
Name="cmbbox_years"
DisplayMemberPath="display"
SelectedValuePath="value"
ItemsSource="{Binding Years}"
SelectedItem="{Binding YearSelectedItem}"
ToolTip="{Binding Path=SelectedItem.display,ElementName=cmbbox_years}"/>