Делаете изображение кликом, но все же реагируете на наведение мыши? - PullRequest
8 голосов
/ 28 апреля 2011

Название в значительной степени говорит само за себя.Есть ли способ сделать изображение в коде 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>

1 Ответ

1 голос
/ 12 мая 2011

Одним из простых способов является правильное выравнивание элементов на основе z-порядка.Если вы можете переместить изображение назад и иметь элемент, который хотите щелкнуть вверху, вы можете легко заставить это работать.Кроме того, сделайте вещи немного прозрачнее, чтобы вы видели изображение больше, чем элемент сверху, что сделало бы UX бесшовным.

Конечно, вам нужно использовать контейнер, такой как Grid, который может добавить несколько элементов вплоскость образца.

-Fahad

...