WPF: Größenanpassung für Bilder in grid-und listbox

Habe ich ein Listenfeld mit der horizontale Bildlauf, und jedes Element besteht aus einer zwei-Zeilen-raster. Die erste Zeile enthält ein Bild, und die zweite Zeile einen Rand verwendet werden, zu machen ein Spiegelbild der ersten.

(Yeah, Yeah. Ich weiß. Ein weiteres coverflow Versuch...)

Brauche ich etwas Hilfe bei der Größenanpassung der Bilder. Wenn ich nicht geben Sie eine beliebige Größe, es rendert das Bild in voller Größe, aber ich will es werden beschränkt durch die Höhe des grid-Zeile. Wenn sich das Fenster ändert die Größe der Bilder sollten die Größe.

Irgendwelche Hinweise?

Update:

Ich habe jetzt änderte den code ein wenig. Zuerst habe ich entfernt eine unnötige Auslöser, aber der wichtige Teil ist

  • Deaktivierte vertikale Bildlaufleiste auf listbox.
  • Entfernt Höhe auf coverImage
  • Geändert von layoutTransformation zu RenderTransformation
  • Schrumpfen nicht ausgewählte Element anstelle der Skalierung der ausgewählten Artikel.

Das gibt mir fast, was ich will. Es gibt eine Lücke zwischen dem coverImage und die coverReflection, dass ich cant finden einen Grund für. Irgendwelche Hinweise für das og vielleicht sollte ich post eine neue Frage...?

Zweite Update:

Ich denke ich habe eine Lösung, die für die Reflexion-Lücke nun. Es fühlt sich ein wenig umständlich, aber. Ich denke, es gibt bessere Wege, es zu tun.

Was ich getan habe, ist
- Ich bin nicht mehr Umklappen der Grenze, ich bin durch die visuelle Pinsel statt.
- Ich habe eine TileMode="Tile" für die visuelle Pinsel

Nun, ich bin mir nicht sicher, warum dies funktioniert, aber es kommt nah an, was ich will, 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>

InformationsquelleAutor Vegar | 2009-02-25

Schreibe einen Kommentar