【发布时间】: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>
【问题讨论】:
-
只是一个普通的
<Grid>。 -
好问题,我没有答案,但我认为没有简单的方法可以完成您的要求。如果您知道图像背后的内容,您可以让它捕捉鼠标点击的预览事件。否则,我建议捕捉图像上的点击,然后使用代码触发另一个事件,可能是一个简单的自定义事件,而不是相同的鼠标点击。