如何显示DataGridComboBoxColumn的工具提示?

时间:2010-10-13 18:45:27

标签: .net wpf datagrid tooltip datagridcomboboxcolumn

我想为 DataGridComboBoxColumn 的元素样式(非编辑模式)显示工具提示。我无法找到一个很好的方法来做到这一点。在下面的示例中,我可以显示工具提示,也可以通过将 IsHitTestVisible 属性更改为true或false来允许对单元格进行编辑。我不能在不编辑时显示工具提示并允许启动编辑模式。当命中测试为真时,工具提示有效。当命中测试为假时,组合框将下拉。

获得编辑和工具提示的最佳方法是什么?

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <DataGrid ItemsSource="{Binding}"
              AutoGenerateColumns="False"
              >
        <DataGrid.Columns>
            <DataGridComboBoxColumn Header="Yo">
                <DataGridComboBoxColumn.ElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="ComboBox">
                                        <TextBlock 
                                            Text="{TemplateBinding Text}"
                                            IsHitTestVisible="False"
                                            ToolTip="Yo"/>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </DataGridComboBoxColumn.ElementStyle>
            </DataGridComboBoxColumn>
        </DataGrid.Columns>
    </DataGrid>
</Grid>
</Window>



using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfApplication2
{
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new List<string> { "Hello" };
    }
  }
}

1 个答案:

答案 0 :(得分:0)

尝试使用DataGridTemplateColumn并将IsReadOnly =“false”添加到DataGrid中

...

<dg:DataGrid.Columns >
    <dg:DataGridTemplateColumn >
        <dg:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding something}">
                    <ToolTip Content="Write something here" />
                 </TextBlock>
             </DataTemplate>
         </dg:DataGridTemplateColumn.CellTemplate>
    </dg:DataGridTemplateColumn>
<dg:DataGrid.Columns >

...