<ListBox.Resources>或<ListBox.ItemContainerStyle>中的ListBoxItem样式?

杰拉德

我可以把一个XAMLStyleListBoxItem<ListBox.Resources><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>

要么:

<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 = Horizo​​ntalContentAlignment; DataItem = null ....等。
这是一个绑定,隐藏在系统Aero样式的某个位置,不是我的。
只有当我同时使用两种样式时,此警告才会消失!

刺猬

ItemContainerStyle这样做是正确的方法,因为它是显式设置的,因此wpf不必总是查找样式可能在的位置。它更快更好。这就是为什么存在该财产的原因。

如果ItemContainerStyle未设置,则WPF将在ListBox.ResourcesWindow.Resources或中寻找样式Application.Resources这对性能不利。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

<ListBox.Resources>或<ListBox.ItemContainerStyle>中的ListBoxItem样式?

来自分类Dev

DataTrigger不会更改ListBox的ItemContainerStyle中的模板

来自分类Dev

Listbox.ItemContainerStyle选定的项目

来自分类Dev

在WPF MVVM模式中更改ListBox MVVM的ItemContainerStyle

来自分类Dev

为什么Listbox DataTemplate不使用Windows.Resources样式?

来自分类Dev

在WPF中,什么将ListBoxItem与ListBox相关联?

来自分类Dev

在WPF中,什么将ListBoxItem与ListBox相关联?

来自分类Dev

WPF ListBox.SelectedItems作为ListBoxItem

来自分类Dev

XAML 扩展 ListBox 和 ListBoxItem 控件

来自分类Dev

绑定后在ListBox中添加项目或从ListBox中删除项目

来自分类Dev

ListBox中的foreach项| SqlReader

来自分类Dev

在AHK中附加ListBox列表

来自分类Dev

如何填充backgroundworker中的ListBox?

来自分类Dev

无法在WPF ListBox中滚动

来自分类Dev

无法在ListBox中绑定命令

来自分类Dev

Windows Phone中的Lazzy Listbox

来自分类Dev

在WPF中重写OnDrawItem ListBox

来自分类Dev

ListBox中的多条目合并

来自分类Dev

使用样式动态更改ListBox方向

来自分类Dev

使用样式动态更改ListBox方向

来自分类Dev

ListBox、ListView 和 GridView 项目的样式

来自分类Dev

从ListBox继承

来自分类Dev

C# WPF Tab 导航以从 ListBox 外部控制 ListBoxItem 内部

来自分类Dev

ListBox中的项目不会自动更新

来自分类Dev

如何在ListBox中更改SelectedItem的前景?

来自分类Dev

WPF MVVM ListBox中的多项选择

来自分类Dev

XAML / WPF中的ListBox项布局

来自分类Dev

MVVM模式中的WPF DataBinding ListBox

来自分类Dev

WP8 ListBox中的FindAncestor实现