组合框中每个项目的工具提示

时间:2019-01-14 17:18:13

标签: wpf vb.net xaml

我正在尝试为组合框中的每个用户名(CreatedBy)添加一个工具提示,以防用户名对于组合框的宽度而言过长。

我知道这个问题已经被问了一百万遍了,我已经尝试过使用Style.Triggers方法,并且我也尝试过 ToolTip =“ {Binding Path = SelectedCreatedBy.ToolTip,RelativeSource = {RelativeSource Self}}

<ComboBox ItemsSource="{Binding CreatedBys.DefaultView}" SelectedValue="{Binding SelectedCreatedBy,UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="CreatedBy" DisplayMemberPath="CreatedBy" ToolTip="{Binding SelectedCreatedBy}" 
    Grid.Row="3" Grid.Column="12" Height="22" Width="85" FontSize="11" IsEditable="{Binding IsCreatedByEditable}" VerticalAlignment="Top" HorizontalAlignment="Left" >

编辑:我找到了解决方案,我将在此处发布代码

<ComboBox ItemsSource="{Binding CreatedBys.DefaultView}" SelectedValue="{Binding SelectedCreatedBy,UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="CreatedBy" DisplayMemberPath="CreatedBy" ToolTip="{Binding SelectedCreatedBy}" 
          Grid.Row="3" Grid.Column="12" Height="22" Width="85" FontSize="11" IsEditable="{Binding IsCreatedByEditable}" VerticalAlignment="Top" HorizontalAlignment="Left" >
<ComboBox.ItemContainerStyle>
    <Style>
        <Setter Property="Control.ToolTip" Value="{Binding CreatedBy}" />
    </Style>
      </ComboBox.ItemContainerStyle>
 </ComboBox>

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您希望每个组合框选项(不仅是所选的组合框)出现一个工具提示。如果是这种情况,请在您的ComboBox内添加以下代码:

<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock
            Text="{Binding CreatedBy}"
            ToolTip="{Binding ToolTip}"
            />
    </DataTemplate>
</ComboBox.ItemTemplate>

<ComboBox.ItemContainerStyle>
    <Style TargetType="ComboBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ComboBox.ItemContainerStyle>

ItemTemplate为每个项目定义一个TextBlock,并将一个ToolTip绑定到您的视图模型的ToolTip属性。 ItemContainerStyle会拉伸ComboBoxItem,即使鼠标不在文本上而是在项目上方,工具提示也会出现。