在WPF中,有没有办法检查触发器中窗口的“WindowState”属性?我尝试使用“0”,“最小化”和“WindowState.Minimized”的值。
实施例
<Window.Triggers>
<Trigger Property="WindowState" Value="Minimized">
<Setter Property="ShowInTaskBar" Value="False" />
</Trigger>
</Window.Triggers>
答案 0 :(得分:6)
像这样工作:
<Window.Style>
<Style TargetType="Window">
<Style.Triggers>
<Trigger Property="WindowState" Value="Minimized">
<Setter Property="ShowInTaskbar" Value="False" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Style>
修改:您需要将触发器放在Window.Style
。
答案 1 :(得分:6)
或者,如果您希望窗口以外的控件响应WindowState属性,则可以使用DataTrigger:
<DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}"
Value="Normal">
<Setter Property="Fill" Value="Green"/>
</DataTrigger>
答案 2 :(得分:0)
在最大化窗口时如何增加边框厚度的示例。否则,由于WindowChrome的异常,边框将消失。
此示例还删除了标准窗口标题,因此您必须添加自己的最小/最大化/关闭按钮。
<Window ResizeMode="CanResizeWithGrip"
WindowStyle="SingleBorderWindow">
<!-- Remove window header and border. Use with ResizeMode="CanResizeWithGrip" and WindowStyle="SingleBorderWindow". -->
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="1"
CornerRadius ="0"
ResizeBorderThickness="4"
GlassFrameThickness="0">
</WindowChrome>
</WindowChrome.WindowChrome>
<Border BorderThickness="1">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Style.Triggers>
<!-- Add to avoid border disappearing when window is maximised -->
<DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}"
Value="Maximized">
<Setter Property="Margin" Value="10"/>
</DataTrigger>
<DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}"
Value="Normal">
<Setter Property="Margin" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid>
<!-- Window XAML here. -->
<Grid>
</Border>
</Window>