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

10,636

Solution 1

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>

Solution 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}"/>
Share:
10,636
Relativity
Author by

Relativity

A guy with average IQ - still try to explore microsoft .net day by day :)

Updated on July 26, 2022

Comments

  • Relativity
    Relativity almost 2 years

    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>
    
  • Relativity
    Relativity about 11 years
    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.
  • sa_ddam213
    sa_ddam213 about 11 years
    Do you have SelectedvaluePath set on your ComboBox
  • sa_ddam213
    sa_ddam213 about 11 years
    What data type is in the combobox, can you post your ComboBox xaml, and a example of your collection.
  • Relativity
    Relativity about 11 years
    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. Thanks
  • wonea
    wonea about 6 years
    This will work for a single pass, but it won't update the ToolTip with subsequent viewmodel changes. See stackoverflow.com/a/7313801/271200