2011-08-15 63 views
3

里面我设计与滚动查看器和堆叠面板一个成像图库在WPF如下所示:图像高度堆叠面板

<ScrollViewer x:Name="ShopsScroll" Grid.Row="1" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"> 
     <StackPanel x:Name="stackPanel" Margin="0" Orientation="Horizontal" Height="Auto"> 
      <Image Source="Images/1F/L1_angesb.jpg"/> 
      <Image Source="Images/1F/L1_chanel.jpg"/> 
      <Image Source="Images/1F/L1_dior.jpg"/> 
      <Image Source="Images/1F/L1_gucci.jpg"/> 
      <Image Source="Images/1F/L1_LV.jpg"/> 
      <Image Source="Images/1F/L1_nike.jpg"/> 
</StackPanel> 

由于图像的尺寸较大,我想调整它们的大小,以适应StackPanel的高度。但是,当我将StackPanel中的高度值设置为“Auto”时,它只是使用图像的高度,而不是其父级ScrollViewer。如果我给StackPanel设置了一个固定值,问题似乎已经解决了,但我需要在全屏幕中以不同大小的屏幕使用我的应用程序。因此,它应该适应不同的规模,但不能硬编码固定值。

我该怎么做?

回答

1

你可以使用一个元件结合将图像的高度绑定到StackPanel元素的高度。抱歉,我现在不能测试此代码,但你可以试试

<Image Source="Images/1F/L1_nike.jpg" Height="{Binding ElementName=ShopsScroll, Path=Height}" /> 

MSDN documentation on the Binding.ElementName property

当您想绑定到应用程序中另一个元素的属性时,此属性非常有用。例如,如果要使用Slider控制应用程序中另一个控件的高度,或者要将控件的内容绑定到ListBox控件的SelectedValue属性。

0

尝试设置HorizontalAlignment = "Stretch"VerticalAlignment = "Stretch"为StackPanel中

在我看来最好是有ItemsControl中包含图片,你的情况

<ItemsControl HorizontalContentAlignment="Stretch"> 
      <Image Source="Images/1F/L1_angesb.jpg"/> 
      <Image Source="Images/1F/L1_chanel.jpg"/> 
      <Image Source="Images/1F/L1_dior.jpg"/> 
      <Image Source="Images/1F/L1_gucci.jpg"/> 
      <Image Source="Images/1F/L1_LV.jpg"/> 
      <Image Source="Images/1F/L1_nike.jpg"/> 

</ItemsControl> 

希望这有助于