我正在尝试创建一个由Grid
ScrollViewer
组成的照片库组件。它应该可以调整大小,但是照片单元格必须保持正方形,垂直间隙应该与水平尺寸相同。所以我试图将行大小绑定到列'实际尺寸:
<ScrollViewer>
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Name="column" Width="216*"/>
<ColumnDefinition Name="gap" Width="4*"/>
<ColumnDefinition Width="216*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="216*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="216*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="{Binding ElementName=column, Path=ActualWidth}"/>
<RowDefinition Height="{Binding ElementName=gap, Path=ActualWidth}"/>
<RowDefinition Height="{Binding ElementName=column, Path=ActualWidth}"/>
<RowDefinition Height="{Binding ElementName=gap, Path=ActualWidth}"/>
<RowDefinition Height="{Binding ElementName=column, Path=ActualWidth}"/>
<RowDefinition Height="{Binding ElementName=gap, Path=ActualWidth}"/>
<RowDefinition Height="{Binding ElementName=column, Path=ActualWidth}"/>
</Grid>
</ScrollViewer>
我做错了什么?我该怎么办才能让细胞始终保持正方形?
答案 0 :(得分:0)
我认为网格不是很好的控制,因为如果你写照片库组件,你需要在调整大小后包装项目。
最好的方法是使用自定义样式的ListBox(使用WrapPanel作为ItemsHost元素)。 列表框:
<ListBox
Style="{StaticResource PhotoListStyle}"
SelectionMode="Extended"
ItemsSource="{Binding}"
</ListBox>
自定义样式:
<Style TargetType="{x:Type ListBox}" x:Key="PhotoListStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}" >
<WrapPanel Margin="5" IsItemsHost="True" Orientation="Horizontal"
ItemHeight="{Binding ElementName=32}"
ItemWidth="{Binding ElementName=32"
VerticalAlignment="Top" HorizontalAlignment="Stretch" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
英语不是我的母语