如何设置不活动窗口的样式?

时间:2016-06-03 11:30:51

标签: c# .net wpf xaml mahapps.metro

如果窗口不是当前活动窗口,我希望背景更改为灰色。我试过这个:

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

但它不起作用,即使窗口处于焦点,背景总是灰色。我使用了错误的财产或我做错了什么?

4 个答案:

答案 0 :(得分:2)

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

enter image description here

答案 1 :(得分:0)

您需要添加:

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

(或您想要的背景颜色)。

您可能还需要添加:

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

你的风格。

Source

答案 2 :(得分:0)

您还需要在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>

答案 3 :(得分:0)

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

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

>