2010-10-13 108 views
1

我想显示一个DataGridComboBoxColumn的元素样式(非编辑模式)的工具提示。我一直无法弄清楚这样做的好方法。在下面的示例中,我可以显示工具提示,也可以通过将IsHitTestVisible属性更改为true或false来对单元格进行编辑。我不能在编辑时显示工具提示,并允许启动编辑模式。当命中测试结果为真时,工具提示将起作用。当命中测试错误时,组合框将会下降。如何显示DataGridComboBoxColumn的工具提示?

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

<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" }; 
    } 
    } 
} 

回答

0

尝试使用DataGridTemplateColumn并添加IsReadOnly = “假” 成的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 > 

...