0

画像とラベルを含む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>

現在マウスオーバーしている画像の後ろに3番目の画像(glow.png)を表示したいと思います。スタックパネルに2つ目の画像を追加して、表示を非表示に設定できないようです。私はまだマウスオーバーの部分にさえ取り組んでいません。

スタックパネル内に別の画像を追加し、その可視性をmouseenterで正しいアプローチが表示されるように設定してから、mouseleaveでスワップバックしていますか?

ありがとう。

4

2 に答える 2

2

あなたは確かにある画像を別の画像の後ろに置くことができます。StackPanelに画像を直接追加する代わりに、グリッドを追加してから、次のように両方の画像を追加します。

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

また、ビットマップ効果を調べて、任意のWPF要素に「グロー」効果を導入することもできます。

編集:必要な効果を実現する別の方法(私は信じています)は、トリガーで画像のSourceプロパティを交換することです。ここではメモリからXAMLを書き込もうとはしませんが、画像自体のIsMouseOverプロパティを取得できます。また、Trueに切り替わると、そのソースを画像の「光る」バージョンに設定できます。

于 2008-12-23T03:49:11.307 に答える
1

もう 1 つの可能性は、画像に境界線を追加し、境界線ブラシの色を任意の色に設定し、不透明度を 0 に設定することです。MouseEnter イベント ハンドラで、不透明度を 1 に設定します。

于 2008-12-23T15:44:04.470 に答える