Как показать всплывающую подсказку для DataGridComboBoxColumn? - PullRequest
1 голос
/ 13 октября 2010

Я хочу показать подсказку для стиля элемента (режим без редактирования) для 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 голосов
/ 21 августа 2011

Попробуйте использовать 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 >

...
...