【问题标题】:Any way for a ToolTip to trigger a MouseEnter event?ToolTip 有什么方法可以触发 MouseEnter 事件?
【发布时间】:2011-12-08 10:14:34
【问题描述】:

我有一个带有工具提示的控件。我想要的是,当我将鼠标悬停在控件上并打开工具提示时:如果我然后用鼠标输入工具提示 - 这将触发 mouseEnter 事件以触发其他操作。我最接近解决这个问题的方法是在带有触发器的控件上添加一个 ToolTipClosing 事件......但这会在我离开控件后立即触发 - 即使我的鼠标没有进入工具提示。 (在工具提示本身上触发 MouseEnter 事件似乎根本不会被触发)

这是一个例子:(如果我输入工具提示,我想更改边框的背景)

XAML

<Border Height="300" Name="dummyBorder"
                        Width="200"
                        Background="Red" /> 
    <Label ToolTipService.InitialShowDelay="3000"
                           Content="Hover over here"
                           ToolTipService.ShowDuration="4000"
                           ToolTipService.Placement="Right"
                           ToolTipClosing="Label_ToolTipClosing"
                           Width="100"
                           HorizontalAlignment="Center"
                           Margin="10">
        <Label.ToolTip>
            <ToolTip Name="tt"  MouseEnter="ttBorder_MouseEnter">
                <Border Background="Brown"
                        Name="ttBorder"
                        MouseEnter="ttBorder_MouseEnter"
                        Width="100"
                        Height="50">
                    <TextBlock Text="This is a tool tip." />
                </Border>
            </ToolTip>
        </Label.ToolTip>
    </Label>

CodeBehind:(这些都不起作用)

private void Label_ToolTipClosing(object sender, ToolTipEventArgs e)
{
    if (tt.IsMouseDirectlyOver)
    {
        dummyBorder.Background = Brushes.Aqua;
    }
}

private void ttBorder_MouseEnter(object sender, MouseEventArgs e)
{
    dummyBorder.Background = Brushes.Aqua;
}

我特别想使用工具提示而不是弹出窗口。这可能吗? 任何帮助将不胜感激!

【问题讨论】:

    标签: wpf tooltip mouseenter


    【解决方案1】:

    你会想试试这样的:

    <Window.CommandBindings>
    <CommandBinding Command="ChangeColour" 
       CanExecute="ChangeCanExecute"
       Executed="ChangeExecuted" />
    </Window.CommandBindings>
    

    在您的工具提示标签内:

    <MouseBinding Gesture="LeftClick" Command="{Binding ChangeColour}"/>
    

    然后在你的代码隐藏中:

    private void ChangeCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
      e.CanExecute = true;
      e.Handled = true;
    }
    
    private void ChangeExecuted(object sender, ExecutedRoutedEventArgs e)
    {
      dummyBorder.Background = Brushes.Aqua;
      e.Handled = true;
    } 
    

    【讨论】:

    • 我不能 100% 确定在后面的代码中连接命令,因为我使用 mvvm 模型执行所有 wpf。这种方式有没有报错?
    • msdn.microsoft.com/en-us/library/… 这有一个很好的例子,可以用后面的代码创建绑定。希望有帮助!
    【解决方案2】:

    嗯(9 个月后没有答案)我想那是没有办法的。 (除非另有证明)

    【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多