为什么我的ItemsControl不为每个项目创建ContentPresenter?我猜这是让我的项目不显示的原因(当我使用实时视觉树检查时,它们被设置为可见并且位于正确的位置)。我基本上重复使用上面在不同ItemsControl中运行的代码,并且在使用此问题搜索Google / Stackoverflow时我无法找到任何内容。我可以包含视图模型代码,但我不认为它是相关的,因为我在Live Property Explorer中看到了适当的值,并且可以看到每个WellContainer都在其适当的网格单元格中。
XAML:
public MyClass()
{
this.WhenAnyValue(x => x.StripedImage)
.ObserveOn(RxApp.TaskpoolScheduler)
.Select(im => CreateBlurImage(im))
.ToProperty(this, x => x.Filtered, out _filtered, scheduler:RxApp.MainThreadScheduler);
}
实时可视树检查:
答案 0 :(得分:1)
ItemsControl
旨在仅在必要时将项目包装在容器中,也就是说,当项目不符合自己的容器时。根据您的评论,我们发现WellContainer
派生自Control
,因此有资格成为其自己的容器 1 ,并且不包含在{{ 1}}。遗憾的是,无法直接控制此行为,但您可以继承ContentPresenter
并覆盖ItemsControl.IsItemItsOwnContainerOverride
方法以修改默认行为。
1 正如我们在ItemsControl
source code中看到的那样,只有ItemsControl
类型的商品才有资格成为它自己的容器。