Проверка значения WindowState окна в триггере - PullRequest
4 голосов
/ 12 января 2011

В WPF есть ли способ проверить свойство WindowState окна в Trigger?Я пытался использовать значения "0", "Minimized" и "WindowState.Minimized."

ПРИМЕР:

<Window.Triggers>
    <Trigger Property="WindowState" Value="Minimized">
        <Setter Property="ShowInTaskBar" Value="False" />
    </Trigger>
</Window.Triggers>

Ответы [ 3 ]

6 голосов
/ 06 июля 2017

Или, если вы хотите, чтобы элемент управления, отличный от окна, отвечал на свойство WindowState, вы можете использовать вместо него DataTrigger:

<DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}" 
             Value="Normal">
   <Setter Property="Fill" Value="Green"/>
</DataTrigger>
6 голосов
/ 12 января 2011

Работает так:

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

0 голосов
/ 19 февраля 2019

Пример того, как увеличить толщину границы, когда окно развернуто.В противном случае, из-за странностей 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>
...