列表框、所选项和失去焦点的突出显示样式



我知道有很多这样的问题。但是这些解决方案中的大多数都不适用于我的情况。然而,在花了一天的时间之后,我终于找到了一个适用于我的解决方案。我只需要一个对 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 的概念非常简单 – 它是任何 XAML 内容的占位符,可用于在运行时插入内容。
这里还有更多。

相关内容

  • 没有找到相关文章

最新更新