WPF - 工具提示内容绑定到组合框选定项目

时间:2017-07-26 15:24:23

标签: c# wpf

我有一个数据网格,每个列的头部都有一个组合框。我希望在悬停组合框时显示工具提示,以显示所选的项目值

<DataGrid HeadersVisibility="Column" Name="griglia" Grid.Row="2" ItemsSource="{Binding Path=Test}" AutoGenerateColumns="True" IsReadOnly="True" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Visible">
        <DataGrid.ColumnHeaderStyle>
            <Style TargetType="{x:Type DataGridColumnHeader}">
                <Setter Property="ContentTemplate" >
                    <Setter.Value>
                        <DataTemplate DataType="DataGridColumnHeader">
                            <ComboBox ItemContainerStyle="{StaticResource SingleSelectionComboBoxItem}" DisplayMemberPath="Oggetto" Width="100" Height="20" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}},Path=DataContext.Selezione, UpdateSourceTrigger=LostFocus}"  SelectionChanged="SingleSelectionComboBox_SelectionChanged"/>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
                <Setter Property="ToolTip">
                    <Setter.Value>
                        <ToolTip Content = "what should i put here????"/>
                    </Setter.Value>
                </Setter>
            </Style>
        </DataGrid.ColumnHeaderStyle>
</DataGrid>

我应该在工具提示的内容属性中添加什么?我已经尝试了

Content = "{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridColumnHeader}},Path=DataContext.Tot.Oggetto}"

其中Tot.Oggetto是一个字符串,其中包含组合框中显示的项目,但它不起作用

编辑:我已经尝试设置组合框的工具提示属性,如

ToolTip="{Binding Path=SelectedItem.ToolTip, RelativeSource={RelativeSource Self}}"

但它没有显示任何工具提示

1 个答案:

答案 0 :(得分:1)

您的第一次尝试是设置DataGridColumnHeader的工具提示,但似乎您想要设置ComboBox的工具提示,对吗?

您可以设置ComboBox的工具提示以显示其选定的值,如下所示:

<ComboBox ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=SelectedValue}" ...>

RelativeSource={RelativeSource Self}绑定到ComboBox本身。然后Path=SelectedValue指定您要绑定到此ComboBox的属性SelectedValue,而不是直接绑定到自身。

那么你的代码就是:(​​我删除了设置DataGridColumnHeader的Tooltip的代码并修改了DataTemplate中ComboBox的代码)

<DataGrid HeadersVisibility="Column" Name="griglia" Grid.Row="2" ItemsSource="{Binding Path=Test}" AutoGenerateColumns="True" IsReadOnly="True" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Visible">
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="ContentTemplate" >
                <Setter.Value>
                    <DataTemplate DataType="DataGridColumnHeader">
                        <ComboBox ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=SelectedValue}" ItemContainerStyle="{StaticResource SingleSelectionComboBoxItem}" DisplayMemberPath="Oggetto" Width="100" Height="20" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}},Path=DataContext.Selezione, UpdateSourceTrigger=LostFocus}"  SelectionChanged="SingleSelectionComboBox_SelectionChanged"/>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.ColumnHeaderStyle>
</DataGrid>