6

我正在开发一个必须使用 Windows 经典主题运行的 WPF 应用程序。应用程序创建一个包含 ListBox 的对话框。显示对话框时,必须禁用 1s 才能接受任何输入。我正在使用样式触发器来完成此操作,并且可以正常工作。但是,ListBox 在禁用时会显示白色背景,我似乎无法摆脱它。使用 aero 主题时,以下样式资源修复了该问题:

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

但是当使用 Windows 经典主题时,白色背景会重新出现。我该如何补救经典主题的情况???

4

1 回答 1

9

经过进一步研究,我发现 Windows Classic 主题使用 WindowBrushKey 而不是 ControlBrushKey。因此,这解决了 Aero 和 Classic 主题的问题:

<Style TargetType="{x:Type ListBox}">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Transparent"/>
    </Style.Resources>
于 2010-04-07T18:12:56.193 回答