如何在代码隐藏中显示工具提示?下面的代码更好地定义了我的问题。显然,我不希望代码检查鼠标位置等,而只是如何显示工具提示。

private void UIElement_OnMouseMove(object sender, MouseEventArgs e)
{
    // if mouse position equals certain coordinates show the tooltip
}

最佳答案

尝试这样:

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,因为可以通过两种方法设置Control的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类型的内容分配给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;
            }
        }
    }
}

关于c# - 如何在WPF中的代码背后显示工具提示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23041768/

10-13 02:33