如何设置 Inactive Window 的样式?

How To Style Inactive Window?

如果 Window 不是当前活动的 Window,我希望背景变为灰色。我试过这个:

<mm:MetroWindow.Style>
    <Style TargetType="{x:Type mm:MetroWindow}">
        <Style.Triggers>
            <Trigger Property="IsFocused" Value="False">
                <Setter Property="Background" Value="Gray" />
            </Trigger>
        </Style.Triggers>
    </Style>
</mm:MetroWindow.Style>

但这不起作用,背景始终为灰色,即使 Window 处于焦点。是我用错了 属性 还是我做错了什么?

您需要添加:

        <Trigger Property="IsFocused" Value="True">
            <Setter Property="Background" Value="Red" />
        </Trigger>

(或者任何你想要的背景颜色)。

您可能还需要添加:

 <Setter Property="Focusable" Value="true"/>

适合你的风格。

Source

您还需要在 Style 中设置活动背景。背景可以通过多种方式设置,并且 Style 在层次结构中并不高。参见 https://msdn.microsoft.com/en-us/library/ms743230%28v=vs.100%29.aspx

<mm:MetroWindow.Style>
    <Style TargetType="{x:Type mm:MetroWindow}">
        <Setter Property="Background" Value="someColour" />
        <Style.Triggers>
            <Trigger Property="IsFocused" Value="False">
                <Setter Property="Background" Value="Gray" />
            </Trigger>
        </Style.Triggers>
    </Style>
</mm:MetroWindow.Style>

使用IsActive 属性:

XAML:

    <Style x:Key="MetroWindowStyle2" TargetType="{x:Type Controls:MetroWindow}">
        <Style.Triggers>
            <Trigger Property="IsActive" Value="False">
                <Setter Property="Background" Value="Gray" />
            </Trigger>
        </Style.Triggers>
    </Style>

实际上,我可以看到您正在使用主题MahApps.Metro。对于该主题,您只需如下设置 属性 'NonActiveWindowTitleBrush' 即可控制非活动 window 标题的颜色。在下面的示例中,我将非活动 window 标题设置为白色。

<Controls:MetroWindow x:Class="CefSharp.MinimalExample.Wpf.MainWindow"                      
                      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:wpf="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
                    xmlns:cef="clr-namespace:CefSharp;assembly=CefSharp.Core"

                    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
                    xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"   

                    NonActiveWindowTitleBrush="White"

>