从MouseLeftButtonDown事件在DataGrid中显示工具提示

时间:2013-12-20 08:41:15

标签: c# wpf datagrid

我有一个包含一些数据的DataGrid。我添加了一个列,用户可以从中删除行。我想从MouseLeftButtonDown事件中显示一个工具提示。

问题是用户无法删除某些行。这就是为什么我需要使用工具提示通知他,具体取决于行的状态。我的代码:

<DataGridTemplateColumn Header="Action" Width="*" IsReadOnly="True" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate >
            <Image Height="20" Width="20"  Source="{Binding Action}" 
                   HorizontalAlignment="Center" VerticalAlignment="Center"                                    
                   x:Name="ActionParameter"
                   MouseLeftButtonDown ="ActionParameter_MouseLeftButtonDown">
                <Image.ToolTip>
                    <ToolTip>
                        <StackPanel>
                            <TextBlock>This is a linked parameter you can't edit it !</TextBlock>
                        </StackPanel>
                    </ToolTip>
                </Image.ToolTip>
            </Image>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

使用该XAML代码将始终显示工具提示。我试图使用鼠标左键测试该行,但我找不到办法做到这一点。

1 个答案:

答案 0 :(得分:0)

将以下内容添加到您的Image XAML声明中:

ToolTipService.IsEnabled="False"

然后在ActionParameter_MouseLeftButtonDown中,您可以使用:

    void ActionParameter_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        ... // compute canDelete

        if (cantDelete)
        {
           Image img = (Image)sender;
           ToolTipService.SetIsEnabled(img, true);

           // Uncomment if you want to immediately open it
           // ((ToolTip)img.ToolTip).IsOpen = true;
        }
    }

请注意,如果您取消注释以编程方式打开工具提示,它将保持打开状态,直到您关闭它或窗口失去焦点。