WPF ListBox DataTemplate и изображение Вопрос - PullRequest
0 голосов
/ 23 декабря 2008

У меня есть ListBox со StackPanel, который содержит изображение и метку.

<ListBox.ItemsPanel>
    <ItemsPanelTemplate>
        <VirtualizingStackPanel Orientation="Horizontal" IsItemsHost="True" />
    </ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Vertical">
            <Image Source="{Binding Image}" Cursor="Hand" Tag="{Binding Link}" MouseLeftButtonDown="Image_MouseLeftButtonDown" ToolTip="Click to see this product on adidas.com" VerticalAlignment="Top" HorizontalAlignment="Left"  />
            <Label Content="{Binding Name}" Cursor="Hand" Tag="{Binding Link}" MouseLeftButtonDown="Label_MouseLeftButtonDown" VerticalAlignment="Bottom" Foreground="White" Style="{StaticResource Gotham-Medium}" FontSize="8pt"  HorizontalAlignment="Center" />
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>

Я хочу показать третье изображение (glow.png) за текущим наведенным на него изображением. Кажется, я не могу добавить второе изображение на панель стека и установить его видимость скрытым. Я еще даже не занимался мышью.

Добавляет ли другое изображение на панели стека, а затем настраивает его видимость для отображения правильного подхода при вводе мыши, а затем переключается обратно при отпускании мыши?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2008

Вы, конечно, можете иметь одно изображение за другим. Вместо непосредственного добавления изображения в вашу StackPanel, добавьте сетку, а затем добавьте оба изображения, например:

<StackPanel Orientation="Vertical">
    <Grid>
        <Image Source="..." />
        <Image Source="{Binding Image}" ... />
    </Grid>
    <Label Content="{Binding Name}" ... />
</StackPanel>

Возможно, вам также захочется взглянуть на Растровые эффекты , с помощью которых вы можете добавить эффект "свечения" на любой элемент WPF.

Редактировать: Еще один способ добиться желаемого эффекта (я полагаю) заключается в замене свойства источника изображения в триггере. Я не собираюсь пытаться записать XAML из памяти здесь, но вы можете перехватить свойство IsMouseOver для самого изображения, а когда оно переключится в True, вы можете установить его Source в «светящуюся» версию изображения. *

1 голос
/ 23 декабря 2008

Еще одна возможность - добавить рамку к вашему изображению, установить цвет кисти по своему усмотрению, а непрозрачность - 0. В вашем обработчике событий MouseEnter установите непрозрачность 1.

...