0
我正在使用來自codeplex的WPF DataGrid。我爲每個單元格附加了一個工具提示。當鼠標懸停在單元格上時,會出現此工具提示。
在WPF Datagrid中,如何使用箭頭鍵在鍵盤焦點上獲取工具提示?
但是,我可以向工具提示提供可鍵盤性。如果我使用向下箭頭或向上箭頭在DataGrid單元格之間移動(基本上當單元格獲得焦點時),我希望工具提示可見。
請幫我一把。
我正在使用來自codeplex的WPF DataGrid。我爲每個單元格附加了一個工具提示。當鼠標懸停在單元格上時,會出現此工具提示。
在WPF Datagrid中,如何使用箭頭鍵在鍵盤焦點上獲取工具提示?
但是,我可以向工具提示提供可鍵盤性。如果我使用向下箭頭或向上箭頭在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>
通用事件處理程序:(因此,所有的控件可以引用這個事件韓dler,而不是讓每個控制一個新的)
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);
}
}
}
@Caorylulu:你能更精細嗎?我不明白你的代碼是什麼意思。如果你擴展ToolTip類,你不會得到像base.SetToolTip(..)等方法 – GuruC 2012-02-02 08:57:39
@GuruC對不起,我錯過了這是WPF,而不是Winform,我提供的是WinForm解決方案。我已經用兩種解決方案編輯它。我測試了WPF解決方案,它確實有效。你可以取消排名嗎? – Corylulu 2012-02-02 19:10:31