列表框、选中项和失去焦点高亮样式
Listbox, selected item and lost focus highlight style
我知道有很多这样的问题。但大多数这些解决方案都不适用于我的情况。然而,在花了一天时间之后,我终于找到了适合我的解决方案。我只需要对 XAML 有更深入了解的人向我和其他人解释这里到底发生了什么。
<Style x:Key="ListBoxItemStyleNoHighlighting" TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter x:Name="contentPresenter"
Margin="{TemplateBinding Margin}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果有人需要xaml如何使用它,就在这里
<ListBox Background="Transparent"
BorderThickness="0"
ItemTemplate="{StaticResource MyDataTemplate}"
ItemsSource="{Binding MenuSubItems}"
SelectedItem="{Binding MySelectedItem}"
ItemContainerStyle="{StaticResource ListBoxItemStyleNoHighlighting}">
那么这种风格发生了什么?我以前从未见过这样的事情。经过一些研究,我发现 TemplateBinding 只是将其值设置为父项。那么,如果 ContentPresenter 不向样式添加任何内容,为什么还需要它。值得一提的是,如果没有 ContentPresenter,它根本无法工作。
亲切的问候
丹尼尔
ContentPresenter 的概念非常简单——它是任何 XAML 内容的占位符,可用于在运行时插入内容。
Here更多。
我知道有很多这样的问题。但大多数这些解决方案都不适用于我的情况。然而,在花了一天时间之后,我终于找到了适合我的解决方案。我只需要对 XAML 有更深入了解的人向我和其他人解释这里到底发生了什么。
<Style x:Key="ListBoxItemStyleNoHighlighting" TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter x:Name="contentPresenter"
Margin="{TemplateBinding Margin}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果有人需要xaml如何使用它,就在这里
<ListBox Background="Transparent"
BorderThickness="0"
ItemTemplate="{StaticResource MyDataTemplate}"
ItemsSource="{Binding MenuSubItems}"
SelectedItem="{Binding MySelectedItem}"
ItemContainerStyle="{StaticResource ListBoxItemStyleNoHighlighting}">
那么这种风格发生了什么?我以前从未见过这样的事情。经过一些研究,我发现 TemplateBinding 只是将其值设置为父项。那么,如果 ContentPresenter 不向样式添加任何内容,为什么还需要它。值得一提的是,如果没有 ContentPresenter,它根本无法工作。
亲切的问候 丹尼尔
ContentPresenter 的概念非常简单——它是任何 XAML 内容的占位符,可用于在运行时插入内容。
Here更多。