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

Dear200892 Dear200892 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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

 

...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
Dear200892
WPF/Silverlight 8,757 成员 12,031 内容