【问题标题】:Can I explicity show tooltip on Mouse Click event in WPF?我可以在 WPF 中的鼠标单击事件上明确显示工具提示吗?
【发布时间】:2010-06-25 09:12:20
【问题描述】:

当鼠标悬停在帮助图像上时,我正在显示工具提示。

xaml 如下:

 <Image 
     x:Name="HelpImage"
     Width="16"
     Height="16"
     Grid.Row="1"
     Source="..\Images\ToolBar\Help.png"
     Grid.Column="2">
     <Image.ToolTip>
         <Grid
             Background="LightGreen">
             <Grid.RowDefinitions>
                 <RowDefinition />
                 <RowDefinition />
             </Grid.RowDefinitions>
             <StackPanel
                 Background="LightGreen"
                 Height="25"
                 Width="300"
                 Orientation="Horizontal"
                 HorizontalAlignment="Left"
                 VerticalAlignment="Top">
                 <Image
                     VerticalAlignment="Stretch"
                     HorizontalAlignment="Stretch"
                     Width="24"
                     Height="24"
                     Source="/Images/Test.png"
                     Name="image1" />
                 <TextBlock
                     FontFamily="Aharoni"
                     Margin="5"
                     FontSize="20"
                     FontWeight="Bold"
                     Foreground="Black"
                     TextWrapping="Wrap"
                     VerticalAlignment="Top"
                     Height="Auto"
                     HorizontalAlignment="Right"
                     Width="Auto">
                       <Run
                          FontFamily="Calibri"
                          FontSize="14"
                          Foreground="DarkRed"
                          FontWeight="Bold"
                          Text="Bandwidth Base Value" />
                 </TextBlock>
             </StackPanel>
             <TextBlock
                 Grid.Row="1"
                 Background="LightGreen">
                 This is Help  content</TextBlock>
         </Grid>
     </Image.ToolTip>
 </Image>

当用户鼠标悬停在图像控件上时,它会显示工具提示。我可以在用户点击图片时明确显示 ToolTip 吗?

请帮忙!!

【问题讨论】:

    标签: wpf wpf-controls tooltip


    【解决方案1】:

    您可以通过将ToolTip.IsOpen 设置为true 来强制打开工具提示。您可以通过在设置 ToolTip 属性时显式构造一个对 ToolTip 对象的引用。而不是

    <Image.ToolTip>
        <Grid>
        ...
        </Grid>
    </Image.ToolTip>
    

    <Image.ToolTip>
        <ToolTip>
            <Grid>
            ...
            </Grid>
        </ToolTip>
    </Image.ToolTip>
    

    然后在您的 MouseUp 处理程序中执行以下操作:

    ((ToolTip)((FrameworkElement)sender).ToolTip).IsOpen = true;
    

    【讨论】:

    • 非常感谢您的解决方案。它对我有用。但是我应该在哪里将 IsOpen 属性设置为 false ?如果用户单击工具提示之外的任何位置,我想关闭工具提示。
    • 我已经处理了我写过的 UserControl_MouseLeftButtonUp ((ToolTip)((FrameworkElement)this.HelpImage).ToolTip).IsOpen = false;但是,只要我将鼠标放在图像控件上,此事件就会执行。
    • @AshishAshu 我在 ToolTip.Closed 事件中将 IsOpen 设置为 false。
    • 在 Image.MouseLeave 事件上将 ToolTip.IsOpen 设置为 false
    【解决方案2】:

    不,您不能在鼠标单击时调用工具提示。您可以使用 Popup 控件,而不是使用 Tooltip。在鼠标点击时调用Popup Control

    【讨论】:

    • 感谢您的回复。我也可以像显示工具提示一样在鼠标悬停时显示弹出控件吗?
    【解决方案3】:
    EventManager.RegisterClassHandler(typeof(Window), Mouse.MouseDownEvent, 
                                      new MouseButtonEventHandler((o, args) => 
                                      { 
                                          if (_popup.IsOpen) 
                                              _popup.IsOpen = false; 
                                      }));
    

    【讨论】:

      【解决方案4】:

      OnClick 设置 tooltip 的可见性 true 和在 ToolTipClosing 设置可见性 c

      <ToolTip Name="ToolTipGift" ToolTipClosing="ToolTipGift_ToolTipClosing" Visibility="Collapsed">
      ....
      </ToolTip>
      

      【讨论】:

      • 请填写您的答案并添加代码示例以使其更有用
      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多