如何设置 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"/>
适合你的风格。
您还需要在 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"
>
如果 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"/>
适合你的风格。
您还需要在 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"
>