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

发布于 2024-11-01 03:37:27 字数 802 浏览 0 评论 0原文

我使用 ListBox 来显示可编辑对象的列表,其模板除其他外还包含 ComboBox。

我使用这种常见技术来隐藏列表框选择,该技术不用于任何用途:

<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>

问题是这与组合框下拉列表选择混淆。

我想在我的模板中再次覆盖这些资源,指定原始值(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-->

I'm using a ListBox to display a list of editable objects whose template contains, among other things, a ComboBox.

I used this common technique to hide the ListBox selection, which is not used for anything:

<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>

The problem is this messes with the ComboBox dropdown list selection.

I'd like to override these resources again in my template, specifying the original values (SystemColors.HighlightBrush, etc) instead of hardcoding them. How can I do that?

<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-->

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

十六岁半 2024-11-08 03:37:27

我使用了这种常见的技术来隐藏
列表框选择,这不是
用于任何东西

如果您不使用该选择任何东西,您应该只使用ItemsControl 代替。

I used this common technique to hide
the ListBox selection, which is not
used for anything

If you do not use the selection for anything you should just use an ItemsControl instead.

許願樹丅啲祈禱 2024-11-08 03:37:27

您可以执行以下操作:

<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}}" />

将画笔恢复为其默认颜色。

You could do:

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

or

<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}}" />

To restore the brushes to their default colors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文