将选择隐藏在WPF ListBox中,将其保留在包含的控件中

时间:2011-04-12 15:01:39

标签: wpf resources systemcolors

我正在使用ListBox来显示一个可编辑对象的列表,其模板包含一个ComboBox等。

我使用这种常用技术来隐藏ListBox选项,它不用于任何东西:

<ListBox.Resources>
  <Style TargetType="ListBoxItem">
    <Style.Resources>
      <Brush x:Key="{x:Static SystemColors.HighlightBrushKey}">Transparent</Brush>
      <Brush x:Key="{x:Static SystemColors.ControlBrushKey}">Transparent</Brush>

问题在于ComboBox下拉列表选择的混乱。

我想在我的模板中再次覆盖这些资源,指定原始值(SystemColors.HighlightBrush等)而不是硬编码它们。我怎么能这样做?

<ListBox.ItemTemplate>
  <DataTemplate DataType="{x:Type SearchService:Criterion}">
    <DataTemplate.Resources>
      <!--I know how to specify a hardcoded brush here,
          but not how to reference one from SystemColors-->

2 个答案:

答案 0 :(得分:10)

  

我用这种常用技术来隐藏   ListBox选择,不是   用于任何事情

如果你不使用任何的选择,你应该只使用ItemsControl

答案 1 :(得分:3)

你可以这样做:

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
    Color="{x:Static SystemColors.HighlightColor}" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
    Color="{x:Static SystemColors.ControlColor}" />

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
    Color="{DynamicResource {x:Static SystemColors.HighlightColorKey}}" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
    Color="{DynamicResource {x:Static SystemColors.ControlColorKey}}" />

将画笔恢复为默认颜色。