我有自定义itemscontrol用于显示数独游戏网格。我希望它将其项目显示为9X9网格。每个项目都有X和Y属性,我想绑定到网格中的属性位置(网格行和网格。列)。除了绑定这些grid.row和grid.column属性外,一切看起来都有效。代码如下。这不是绑定的错误,因为如果我使用硬值,则没有任何变化。请帮忙。:
<ItemsControl Margin="4" ItemsSource="{Binding Cells, Mode=OneWay}" x:Name="grid">
<ItemsControl.ItemTemplate>
<DataTemplate>
<grid:GridCell Grid.Column="{Binding X}" Grid.Row="{Binding Y}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid IsItemsHost="True" Background="Pink">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition Height="2" />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition Height="2" />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition Width="2" />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition Width="2" />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
编辑: 如果我使用例如
,则没有任何变化<ItemsControl.ItemTemplate>
<DataTemplate>
<grid:GridCell Grid.Column="2" Grid.Row="2" />
</DataTemplate>
</ItemsControl.ItemTemplate>
答案 0 :(得分:9)
这些值会被忽略,因为这些单元格不是Grid
的直接子项,它们包含在由ContentPresenter
的{{1}}创建的ItemContainerGenerator
中。< / p>
您需要使用ItemsControl
在更高级别应用值。
ItemContainerStyle