嘗試這樣的:
if (control.ToolTip != null)
{
// Main condition
if (control.ToolTip is ToolTip)
{
var castToolTip = (ToolTip)control.ToolTip;
castToolTip.IsOpen = true;
}
else
{
toolTip.Content = control.ToolTip;
toolTip.StaysOpen = false;
toolTip.IsOpen = true;
}
}
的Main condition
必要的,因爲ToolTip
的控制可以通過兩種方法進行設置:
First approach
<Button Name="TestButton"
ToolTip="TestToolTip" />
這種方法是 最常見的。在這種情況下,工具提示的內容將反對,而不是鍵入ToolTip
。
Second approach
<Button Name="TestButton"
Content="Test">
<Button.ToolTip>
<ToolTip>TestToolTip</ToolTip>
</Button.ToolTip>
</Button>
是一樣的:
<Button Name="TestButton"
Content="Test">
<Button.ToolTip>
TestToolTip
</Button.ToolTip>
</Button>
在這種情況下,工具提示的內容類型將是Tooltip
。請注意,在第二種情況下,對象會自動填充行TestToolTip
上的工具提示對象,因此此方法會稍微慢一點。
因此,需要此項檢查,以避免異常,當我們試圖給工具提示的ToolTip
類型這裏的內容:
toolTip.Content = control.ToolTip;
下面是一個完整的例子:
XAML
<Grid>
<Button Name="TestButton"
Width="100"
Height="25"
Content="Test"
ToolTip="TestToolTip" />
<Button Name="ShowToolTip"
VerticalAlignment="Top"
Content="ShowToolTip"
Click="ShowToolTip_Click" />
</Grid>
Code-behind
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ShowToolTip_Click(object sender, RoutedEventArgs e)
{
var toolTip = new ToolTip();
if (TestButton.ToolTip != null)
{
if (TestButton.ToolTip is ToolTip)
{
var castToolTip = (ToolTip)TestButton.ToolTip;
castToolTip.IsOpen = true;
}
else
{
toolTip.Content = TestButton.ToolTip;
toolTip.StaysOpen = false;
toolTip.IsOpen = true;
}
}
}
}
對不起,但這給了我nullrefrenceexception。 – Vahid
@Vahid:請參閱我的編輯,我添加完整的示例。 –
感謝它爲按鈕工作,但它不是在Canvas上的MouseMove事件工作 – Vahid