2008-12-23 147 views
0

我有一個ListPanel,它包含一個包含圖像和標籤的StackPanel。WPF ListBox DataTemplate和Image問題

<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)。我似乎無法添加第二個圖像到堆疊面板,並將其設置爲隱藏狀態。我甚至還沒有解決鼠標懸停的部分。

是否在堆疊面板中添加另一個圖像,然後將其設置爲可見性,以便在mouseenter上看到正確的方法,然後在mouseleave上交換回來?

謝謝。

回答

2

你當然可以有一個圖像在另一個之後。而不是直接添加圖片到你的StackPanel,添加一個網格,然後添加兩個圖像,像這樣:

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

你也可能想看看Bitmap Effects,使用它你可以引入到任何一個「發光」效果WPF元素。

編輯:實現你想要的效果的另一種方法(我相信)是在觸發器中換出圖像的Source屬性。我不打算從內存中寫入XAML,但是您可以捕獲圖像本身的IsMouseOver屬性,並且當它切換爲True時,可以將其Source設置爲圖像的「發光」版本。

+0

使用的位圖的影響,謝謝,好主意。 – 2008-12-23 05:11:16

1

另一種可能性是邊框添加到您的圖片,設置爲任何你想要的borderbrush的顏色和不透明度爲0。您的MouseEnter事件處理程序設置不透明度爲1