列表框、选中项和失去焦点高亮样式

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更多。