在WPF数据网格中,如何使用箭头键在键盘上获得工具提示
本文关键字:键盘 工具提示 何使用 数据 WPF 数据网 网格 | 更新日期: 2023-09-27 18:22:08
我正在使用codeplex中的WPF DataGrid。我为每个单元格附上了一个工具提示。当鼠标悬停在单元格上时,会显示此工具提示
但是我可以为Tooltip提供键盘功能吗。如果我使用向下箭头或向上箭头在DataGrid单元格之间移动(基本上是在单元格获得焦点时),我希望工具提示可见。
制作一个自定义工具提示并尝试以下操作:
WPF解决方案:
-
XAML内容:
<Button Canvas.Left="298" Canvas.Top="124" Height="34" Name="button1" Width="106" IsKeyboardFocusedChanged="showToolTip"> Button <Button.ToolTip> <ToolTip> Whatever </ToolTip> </Button.ToolTip> </Button>
-
通用事件处理程序:(因此所有控件都可以引用此事件处理程序,而不是为每个控件创建一个新的事件处理程序)
public void showToolTip(object sender, DependencyPropertyChangedEventArgs e) { //Get tooltip from sender. ToolTip tt = (ToolTip)(sender as Control).ToolTip; //Places the Tooltip under the control rather than at the mouse position tt.PlacementTarget = (UIElement)sender; tt.Placement = PlacementMode.Right; tt.PlacementRectangle = new Rect(0, (sender as Control).Height, 0, 0); //Shows tooltip if KeyboardFocus is within. tt.IsOpen = (sender as Control).IsKeyboardFocusWithin; }
WinForm解决方案:(我知道你没有要求,但我已经写好了,所以我无论如何都会发布它。)
public class myUserControls: UserControl
{
[Category("Category for UserControl")]
public class ToolTipAdv : ToolTip
{
public ToolTipAdv (IContainer container) : base(container)
{
this.AutomaticDelay = 300;
this.BackColor = System.Drawing.SystemColors.Highlight;
this.ForeColor = System.Drawing.Color.White;
}
public void SetToolTip(Control ctrl, string caption)
{
ctrl.GotFocus += ShowToolTip;
base.SetToolTip(ctrl, caption);
}
public void ShowToolTip(object sender, EventArgs e)
{
string message = base.GetToolTip((Control)sender);
base.Show(message, (IWin32Window)sender, (sender as Control).Location);
}
}
}