我有一个包含一些数据的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代码将始终显示工具提示。我试图使用鼠标左键测试该行,但我找不到办法做到这一点。
答案 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;
}
}
请注意,如果您取消注释以编程方式打开工具提示,它将保持打开状态,直到您关闭它或窗口失去焦点。