I have a ListBox with horizontal scrolling, and each item consists of a two row grid. The first row contains an image, and the second row a border used to render a reflection of the first.
(Yeah, yeah. I know. Yet another coverflow attempt...)
I need some help with the sizing of the images. If I don't specify any size, it will render the image at full size, but I want it to be restricted by height of the grid row. If the window resizes, the images should resize.
Any clues?
Update:
I have now changed the code a little. First of all I have removed a unnecessary trigger, but the important part is    
- Disabled vertical scrollbar on listbox.
- Removed height on coverImage
- Changed from layoutTransformation to RenderTransformation
- Shrink non-selected item instead of scaling selected item.
This gives me nearly what I want. There is a gap between the coverImage and the coverReflection that I cant find a reason for. Any clues for that, og maybe I should post a new question...?
Second Update:
I think I have a solution for the reflection-gap to now. It feels a little awkward, though. I guess there are better ways of doing it.
What I've done is - I'm no longer flipping the border, I'm flipping the visual brush instead. - I have added a TileMode="Tile" for the visual brush
Now, I'm not sure why this works, but it's coming close to what I want, so...
<Window
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
 mc:Ignorable="d" 
 x:Class="UntitledProject1.Window1"
 x:Name="Window"
 Title="Window1"
 Width="801" Height="786">
 <Window.Resources>
  <XmlDataProvider x:Key="dataProvider" XPath="Bilder">
   <x:XData>
    <Bilder xmlns="">
     <Bilde>75760-1_-8589666289339775808.jpg</Bilde>
     <Bilde>73255-3_-8589662994232744558.jpg</Bilde>
     <Bilde>75760-1_-8589666289339775808.jpg</Bilde>
     <Bilde>73255-3_-8589662994232744558.jpg</Bilde>
     <Bilde>75760-1_-8589666289339775808.jpg</Bilde>
     <Bilde>73255-3_-8589662994232744558.jpg</Bilde>
    </Bilder>
   </x:XData>
  </XmlDataProvider>
  <ControlTemplate x:Key="listControlTemplate" TargetType="{x:Type ListBoxItem}">
   <Grid x:Name="listItemGrid">
    <Grid.RowDefinitions>
     <RowDefinition/>
     <RowDefinition/>
    </Grid.RowDefinitions>  
    <Image x:Name="coverImage" 
           Source="{Binding Path=InnerText}"  
        Stretch="Uniform" 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Bottom"  
        Grid.Row="0" 
        RenderTransformOrigin="0.5,1">
     <Image.RenderTransform>
      <TransformGroup>
       <ScaleTransform ScaleX="0.7" ScaleY="0.7"/>
       <SkewTransform AngleX="0" AngleY="0"/>
       <RotateTransform Angle="0"/>
       <TranslateTransform X="0" Y="0"/>
      </TransformGroup>
     </Image.RenderTransform>
    </Image>
    <Border x:Name="coverReflection" 
         RenderTransformOrigin="0.5,0" 
      Height="{Binding Path=ActualHeight, ElementName=coverImage, Mode= Default}" 
      VerticalAlignment="Top" 
      Grid.Row="1"
      >
     <Border.OpacityMask>
      <LinearGradientBrush EndPoint="0.0,1" StartPoint="0.0,0">
       <GradientStop Color="#00000000" Offset="0.6"/>
       <GradientStop Color="#BBFFFFFF" Offset="0"/>
      </LinearGradientBrush>
     </Border.OpacityMask>
     <Border.RenderTransform>
      <TransformGroup>
       <ScaleTransform ScaleX="0.7" ScaleY="0.7"/>
       <SkewTransform AngleX="0" AngleY="0"/>
       <RotateTransform Angle="0"/>
       <TranslateTransform X="0" Y="0"/>
      </TransformGroup>
     </Border.RenderTransform>
     <Border.Background>
      <VisualBrush Visual="{Binding ElementName=coverImage}" TileMode="Tile">
       <VisualBrush.Transform>
        <TransformGroup>
         <ScaleTransform ScaleX="1" ScaleY="-1"/>
         <SkewTransform AngleX="0" AngleY="0"/>
         <RotateTransform Angle="0"/>
         <TranslateTransform X="0" Y="0"/>
        </TransformGroup>        
       </VisualBrush.Transform>
      </VisualBrush>
     </Border.Background>
    </Border>    
   </Grid>
   <ControlTemplate.Triggers>
    <Trigger Property="IsSelected" Value="True">     
     <Setter Property="RenderTransform" TargetName="coverImage">
      <Setter.Value>
       <TransformGroup>
        <ScaleTransform ScaleX="1" ScaleY="1"/>
        <SkewTransform AngleX="0" AngleY="0"/>
        <RotateTransform Angle="0"/>
        <TranslateTransform X="0" Y="0"/>
       </TransformGroup>
      </Setter.Value>
     </Setter>     
     <Setter Property="RenderTransform" TargetName="coverReflection">
      <Setter.Value>
       <TransformGroup>
        <ScaleTransform ScaleX="1" ScaleY="1"/>
        <SkewTransform AngleX="0" AngleY="0"/>
        <RotateTransform Angle="0"/>
        <TranslateTransform X="0" Y="0"/>
       </TransformGroup>
      </Setter.Value>
     </Setter>
    </Trigger>
   </ControlTemplate.Triggers>
  </ControlTemplate>
  <Style TargetType="{x:Type ListBoxItem}" x:Key="listStyle">
   <Setter Property="Template" Value="{StaticResource listControlTemplate}" />
  </Style>
 </Window.Resources>
 <Window.BindingGroup>
  <BindingGroup/>
 </Window.BindingGroup>
 <Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource dataProvider}, XPath=/Bilder/Bilde}">
  <ListBox ScrollViewer.HorizontalScrollBarVisibility="Hidden"
     ScrollViewer.VerticalScrollBarVisibility="Disabled"
     ItemsSource="{Binding }" 
     IsSynchronizedWithCurrentItem="True" 
     Background="#FF000000"
     ItemContainerStyle="{StaticResource listStyle}" 
     VerticalAlignment="Stretch"
     >
   <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
     <VirtualizingStackPanel IsItemsHost="True" Orientation="Horizontal" />
    </ItemsPanelTemplate>
   </ListBox.ItemsPanel>
  </ListBox>
 </Grid>
</Window>