How to set the ToolTip of WPF ComboBox based on selected value?
Asked Answered
N

2

9

I have a ComboBox in my WPF application. Using below code I can set the ToolTip as selected value:

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

But if I need to set a separate value for ToolTip based on ComboBox selection, the following code is not working:

<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>
Navada answered 5/3, 2013 at 23:42 Comment(2)
What is your ComboBox bound to? A list of strings? Out of interest, try using SelectedItem rather than SelectedValue.Duffy
i tried both of them :(Navada
W
6

I'm not sure if I understand correctly, but if you are using a Style you should not have to use a DataTrigger or RelativeSource={RelativeSource Self}}" to access SelectedValue, you should be able to access via a Trigger using the 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>
Workwoman answered 5/3, 2013 at 23:50 Comment(4)
I tried this...but not working... If I put the following setter as default <Setter Property="ToolTip" Value="{Binding Path=SelectedValue, RelativeSource={RelativeSource Self}}"/>..it guives me the correct values DAW and generic when ever i select them...but inside the <trigger> it is not working.Navada
Do you have SelectedvaluePath set on your ComboBoxWorkwoman
What data type is in the combobox, can you post your ComboBox xaml, and a example of your collection.Workwoman
Thanks for your help...I have figured it out ...instead of using data triggger with selected value..i used data trigger with original model object...now it is working fine. ThanksNavada
L
2

Bind the tooltip to the display property of the selected item in this case i have property name display, if you have declarative ComboBox items then that would be

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

Else for custom object below code will work

<ComboBox 
  Name="cmbbox_years" 
  DisplayMemberPath="display" 
  SelectedValuePath="value"
  ItemsSource="{Binding Years}" 
  SelectedItem="{Binding YearSelectedItem}" 
  ToolTip="{Binding Path=SelectedItem.display,ElementName=cmbbox_years}"/>
Loriannlorianna answered 6/3, 2013 at 6:32 Comment(1)
This will work for a single pass, but it won't update the ToolTip with subsequent viewmodel changes. See https://mcmap.net/q/792273/-wpf-tooltip-does-not-updateLanielanier

© 2022 - 2024 — McMap. All rights reserved.