我在尝试制作一个数独的小游戏,我自定义了三个控件,分别是:SudokuPanel,SudokuGroup和SudokuItem。
SudokuPanel:作为数独表格的主面板区域,继承ItemsControl,限制了Item项为SudokuGroup。
SudokuGroup:数独9*9的区域,继承ItemsControl,限制了Item项为SudokuItem。
SudokuItem:数独的单元格,继承Button。
在ViewModel定义了属性ObservableCollection<Unit> Units,Unit对象含有ObservableCollection<Cell> Children属性,两个类均实现了INotifyPropertyChanged接口。
现在运行程序,只会显示到SudokuGroup层级,不明白为什么会这样?该如何修改?
<ctrl:SudokuPanel ItemsSource="{Binding Units}" Margin="5">
<ctrl:SudokuPanel.ItemTemplate>
<DataTemplate>
<ctrl:SudokuGroup ItemsSource="{Binding Children}">
<ctrl:SudokuGroup.ItemTemplate>
<DataTemplate>
<ctrl:SudokuItem Content="2"/>
</DataTemplate>
</ctrl:SudokuGroup.ItemTemplate>
</ctrl:SudokuGroup>
</DataTemplate>
</ctrl:SudokuPanel.ItemTemplate>
</ctrl:SudokuPanel>
我给SudokuGroup添加了一个触发器,整个SudokuGroup背景色都变成了红色,这让我更加觉得是没有生成SudokuItem,而不是SudokuItem“藏”起来了。
<Trigger Property="HasItems" Value="False">
<Setter Property="Background" Value="Red"/>
</Trigger>