Je travaille sur une galerie de photos pour Windows Phone 7 et j'essaie d'obtenir que chaque image prenne l'écran et glisse horizontalement. Ce que je fais jusqu'à présent est d'utiliser une listbox que j'ai modifiée pour faire défiler horizontalement mais le problème est que je n'arrive pas à trouver un moyen de lier la largeur et la hauteur de ListboxItem avec les paramètres ActualWidth et ActualHeight du Listbox lui-même. La raison pour laquelle je veux faire cela est que si l'orientation du téléphone change, la taille des photos changerait aussi bien pour s'adapter à l'écran.Silverlight - Liaison Listbox ActualWidth à ListboxItem Width
Voici le code que j'ai jusqu'à présent (je l'ai essayé d'utiliser TemplatedParent et RelativeSource mais je dois faire quelque chose de mal, car il ne fonctionne pas du tout):
<Style x:Key="PhotoGalleryItem" TargetType="ListBoxItem">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid x:Name="ListBoxItemRoot" HorizontalAlignment="Stretch" Margin="4,0,4,0" Width="{Binding RelativeSource={RelativeSource TemplatedParent},Path=ActualWidth}">
<Image Source="{Binding Mode=OneWay}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="controls:PhotoGallery">
<Setter Property="Background" Value="Red"/>
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:PhotoGallery">
<Border BorderBrush="Transparent" BorderThickness="0" >
<Grid x:Name="LayoutRoot" Background="{TemplateBinding Background}">
<ScrollViewer x:Name="Scroller" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden" >
<ItemsPresenter/>
</ScrollViewer>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle" Value="{StaticResource PhotoGalleryItem}" />
</Style>
Toute idée sur comment atteindre ce résultat?
Merci
Avez-vous d'ajouter le code suivant au constructeur de votre page d'application? SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape; –