我可以放一个xamlStyle
for ListBoxItem
in <ListBox.Resources>
or in <ListBox.ItemContainerStyle>
。参见代码。
问题是:有什么区别,我应该选择什么?
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="Canvas.Top" Value="{Binding Top}"/>
<Setter Property="Canvas.Left" Value="{Binding Left}"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Padding" Value="0"/>
</Style>
</ListBox.Resources>
OR:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Canvas.Top" Value="{Binding Top}"/>
<Setter Property="Canvas.Left" Value="{Binding Left}"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Padding" Value="0"/>
</Style>
</ListBox.ItemContainerStyle>
我接受了一个答案,但请注意并思考这个奇怪的症状:
无论哪种方式给了我这个奇怪的数据绑定警告:无法找到引用“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.ItemsControl',AncestorLevel='1”的绑定源。 BindingExpression:Path=HorizontalContentAlignment; DataItem=null .... 等等
这是隐藏在系统 Aero 样式中某处的绑定,它不是我的。
仅当我使用两种风格这个警告消失了!
ItemContainerStyle
是执行此操作的正确方法,因为它是显式设置的,因此 wpf 不需要始终查找样式可能在的位置。它更快更好。这就是该属性存在的原因。
When ItemContainerStyle
未设置 WPF 将在以下位置寻找样式ListBox.Resources
or Window.Resources
or Application.Resources
。这对性能不利。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)