Dear200892 2023-11-07 10:20 采纳率: 50%
浏览 7
已结题

WPF 自定义ItemsControl三层嵌套无法生成第三层控件

我在尝试制作一个数独的小游戏,我自定义了三个控件,分别是: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>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月15日
    • 创建了问题 11月7日