【问题标题】:Making an image click-through but still respond to mouseover?使图像点击但仍响应鼠标悬停?
【发布时间】:2011-08-14 22:13:30
【问题描述】:

标题几乎说明了一切。有没有办法让 XAML 代码中的图像可见,不可点击(我试图让它后面的元素接收点击)并同时响应鼠标悬停事件? IsHitTestVisible 属性禁用鼠标悬停。这是一个代码 sn-p 供参考(它实际上使用了多个额外的 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>

【问题讨论】:

  • 只是一个普通的&lt;Grid&gt;
  • 好问题,我没有答案,但我认为没有简单的方法可以完成您的要求。如果您知道图像背后的内容,您可以让它捕捉鼠标点击的预览事件。否则,我建议捕捉图像上的点击,然后使用代码触发另一个事件,可能是一个简单的自定义事件,而不是相同的鼠标点击。

标签: wpf image xaml mouseover


【解决方案1】:

一种简单的方法是根据 z 顺序正确对齐元素。如果您可以将图像移到后面,并且将要单击的元素放在顶部,则可以轻松完成此操作。此外,让图像变得有点透明,你看到的图像比顶部的元素更多,这将使用户体验无缝。

当然,你需要使用像Grid这样可以在样本平面中添加多个元素的容器。

-法哈德

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多