2011-04-28 52 views
8

標題幾乎說明了一切。有沒有辦法讓XAML代碼中的圖像可見,而不是可點擊的(我試圖讓它背後的元素接受點擊)並同時響應鼠標懸停事件? IsHitTestVisible屬性禁用了鼠標懸停。這裏有一個供參考的代碼片段(它實際上使用了多個額外的MultiDataTriggers,但在這裏並不相關)。目前鼠標懸停的作品,但通過點擊它不(加IsHitTestVisible="True"使得它周圍的其他方法)製作圖片點擊後仍然對鼠標懸停做出迴應?

<Image Name="AutoUpdateStatus" 
     Stretch="UniformToFill" 
     Grid.Column="2" Grid.Row="0" 
     Height="32" Width="32" 
     HorizontalAlignment="Center" 
     Margin="68,2,61,2" 
     VerticalAlignment="Center"> 
    <Image.Style> 
     <Style> 
      <Setter Property="Image.Source"> 
       <Setter.Value> 
        <Binding Source="{x:Static res:AppResources.ok}"> 
         <Binding.Converter> 
          <Helpers:IconToImageSourceConverter /> 
         </Binding.Converter> 
        </Binding> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <MultiDataTrigger> 
        <MultiDataTrigger.Conditions> 
         <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True" /> 
         <Condition Binding="{Binding Path=AutoUpdateStatusIcon}" Value="ok" /> 
        </MultiDataTrigger.Conditions> 
        <Setter Property="Image.Source"> 
         <Setter.Value> 
          <Binding Source="{x:Static res:AppResources.ok_glow}"> 
           <Binding.Converter> 
            <Helpers:IconToImageSourceConverter /> 
           </Binding.Converter> 
          </Binding> 
         </Setter.Value> 
        </Setter> 
       </MultiDataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 
+0

什麼是圖像? – Will 2011-04-28 17:35:21

+0

只是一個普通的''。 – Swooper 2011-04-28 17:39:32

+0

好問題,我沒有答案,但我在想,有沒有簡單的方法來做你的問題。如果您知道圖像背後的內容,可以讓它捕捉鼠標點擊的預覽事件。否則,我會建議捕捉點擊圖像,然後使用代碼,觸發另一個事件,可能是一個簡單的自定義事件,而不是同一個鼠標單擊。 – 2011-04-28 19:15:38

回答

1

一個簡單的方法是正確對齊基於z順序的元素。如果您可以將圖像移動到後面,並在頂部添加要點擊的元素,您可以輕鬆地實現此功能。此外,讓事情看起來有點透明,你會看到圖像比頂部的元素多,這將使UX無縫。

當然,您需要使用像Grid這樣的容器,可以在樣本平面中添加多個元素。

-Fahad