列表框,所选项目和丢失焦点突出显示样式

时间:2015-02-04 10:16:12

标签: wpf xaml listbox styles selecteditem

我知道那里有很多这样的问题。但是大多数这些解决方案在我的情况下都不起作用。然而,花了一天的时间,我终于找到了一个适合我的解决方案。我只需要有更深入了解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,它根本不起作用。

亲切的问候 丹尼尔

1 个答案:

答案 0 :(得分:0)

ContentPresenter的概念非常简单 - 它是任何XAML内容的占位符,可用于在运行时插入内容。
Here更多。