大佬教程收集整理的这篇文章主要介绍了wpf – 为什么ItemsControl不使用我的ItemTemplate?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一个例子:
<ItemsControl> <ItemsControl.ItemTemplate> <DataTemplate> <Grid Margin="5"> <Rectangle Fill="Blue" Height="20" Width="20" /> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> <ItemsControl.Items> <sys:Object /> <TextBox /> <sys:Object /> <Rectangle Fill="Red" Height="20" Width="20" /> </ItemsControl.Items> </ItemsControl>
我希望这能显示四个蓝色矩形.我认为只要定义了ItemTemplate,集合中的每个项目都会呈现为模板的一个实例.但是,在这种情况下,将呈现以下内容:蓝色矩形后跟TextBox,后跟蓝色矩形,后跟红色矩形.
对于从UIElement派生的任何对象,基本实现返回true.
要获得您期望的行为,您需要从ItemsControl继承并重写此方法并使其始终返回false.不幸的是,这不是问题的终点.如果项目是UIElement,则PrepareContainerForItemOverride的默认实现仍然不会将ItemTemplate分配给容器,因此您还需要覆盖此方法: –
protected override bool IsItemItsOwnContainerOverride(object item) { return false; } protected override void PrepareContainerForItemOverride(DependencyObject element,object item) { base.PrepareContainerForItemOverride(element,item); ((ContentPresenter)element).ContentTemplate = ItemTemplate; }
以上是大佬教程为你收集整理的wpf – 为什么ItemsControl不使用我的ItemTemplate?全部内容,希望文章能够帮你解决wpf – 为什么ItemsControl不使用我的ItemTemplate?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。