说我有类似这样的代码
<ItemsControl ItemsSource="{Binding Blabla}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="8" Columns="8"></UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<Data Template>
<Button Command="{Binding blablaComamnd}"></Button>
</DataTemplate>
据我所知,uniformgrid将在一个包装面板中显示64个按钮,就像blalbla数据结构中对象的blabla命令一样。 无论如何要指定哪个项目进入网格中的哪个坐标? (理想情况下基于绑定到blabla对象中的某些数据)
非常感谢
答案 0 :(得分:3)
如果您想指定哪个项目进入哪个单元格,则需要使用普通Grid
并将ItemContainerStyle
更改为ContentPresenter
,这是ItemsControl
的项目包装,将Grid.Row
和Grid.Column
绑定到您的视图模型
<ItemsControl ItemsSource="{Binding Blabla}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
</Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command="{Binding blablaComamnd}"></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="Grid.Column" Value="{Binding Column}"/>
<Setter Property="Grid.Row" Value="{Binding Row}"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
其中Column
和Row
是包含blablaComamnd
的同一视图模型的属性