2011-12-08 58 views
2

我有一個工具提示控件。我想要的是,當我將鼠標懸停在控件上並打開工具提示時:如果我用鼠標輸入工具提示 - 這將觸發mouseEnter事件以觸發其他操作。我找到最接近的解決方案是在控件上用觸發器添加一個ToolTipClosing事件......但是隻要我離開控件就會觸發 - 即使我的鼠標沒有進入工具提示。 (觸發的工具提示本身MouseEnter事件似乎並沒有得到根本解僱)工具提示觸發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> 

代碼隱藏(無論這些工作)

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; 
} 

我特別想用一個工具提示,而不是一個彈出。這可能嗎? 任何幫助將不勝感激!

回答

0

井(9個月後和沒有答案)我想那是沒有辦法的。 (除非另有證明)

+1

MouseEnter不起作用,因爲對於承載工具提示的父Popup,IsHitTestable始終設置爲「false」:http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/ToolTip.cs# 05775d1d4906ee8d 最重要的是,toolips顯然不支持StaysOpen = true,因此無法更改此屬性的值。本來也喜歡這個:( – floele

0

,你會想嘗試這樣的:

<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; 
} 
+0

我試過了,它似乎沒有工作。 – Danield

+0

我不是100%確定掛在代碼背後的命令,因爲我做我所有的WPF mvvm模型。這樣做有沒有錯誤? – Emy

+0

沒有錯誤,但命令沒有被調用 – Danield

相關問題