我需要一个如下窗口;
我试图实现这一点,但无法获得100%的结果。我哪里做错了?
<UniformGrid>
<ItemsControl ItemsSource="{Binding Data}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Black" Background="Gainsboro" BorderThickness="3" Margin="2" Width="100" >
<Grid FlowDirection="LeftToRight">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label HorizontalAlignment="Center" Content="{Binding Label1Text}" Grid.Row="1" Margin="2"/>
<Label HorizontalAlignment="Center" Content="{Binding Label2Text}" Grid.Row="2" Margin="2"/>
<Button HorizontalAlignment="Center" Content="Button1" Width="80" Height="80"
Command="{Binding DataContext.Command1, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
CommandParameter="{Binding}"
Grid.Row="0" Margin="2"/>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<ScrollViewer CanContentScroll="True">
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</UniformGrid>
结果窗口;
答案 0 :(得分:2)
尝试将ItemsPanel
模板更改为UniformGrid
,而不是将ItemsControl
包裹在UniformGrid
中。您也可以尝试使用WrapPanel
代替UniformGrid
:
.......
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2"/>
<!-- <WrapPanel/> -->
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
.......
答案 1 :(得分:0)
您需要指定列数:
<UniformGrid Columns="2">
....