2010-10-13 10 views
1

Je souhaite afficher une info-bulle pour le style d'élément (le mode sans édition) d'un DataGridComboBoxColumn. Je n'ai pas été capable de trouver un bon moyen de le faire. Dans l'exemple ci-dessous, je peux afficher une info-bulle ou autoriser les modifications sur la cellule en modifiant la propriété IsHitTestVisible sur true ou false. J'ai été incapable d'afficher à la fois l'info-bulle en cas de non-édition et de permettre le lancement du mode d'édition. Lorsque le test de réussite est vrai, la pointe de l'outil fonctionne. Lorsque le test d'impact est faux, la zone de liste déroulante va tomber.Comment afficher une info-bulle pour un DataGridComboBoxColumn?

Quelle est la meilleure façon d'obtenir à la fois une édition et une info-bulle?

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

Répondre

0

Essayez d'utiliser DataGridTemplateColumn et ajoutez IsReadOnly = "false" dans 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 > 

...