zoukankan      html  css  js  c++  java
  • WPF 使用触发器让窗口无法最大化且同时可以调整窗口大小

    先上代码:

      <Window.Style>
            <Style TargetType="{x:Type Window}">
                <Setter Property="WindowState"  Value="{Binding Tag, RelativeSource={RelativeSource Mode=Self}, UpdateSourceTrigger=PropertyChanged,Delay=100}"/>
                <Style.Triggers>
                    <Trigger Property="WindowState" Value="Maximized">
                        <Trigger.EnterActions>
                            <BeginStoryboard x:Name="bs">
                                <Storyboard Storyboard.TargetProperty="Tag"    Duration="0:0:0" >
                                    <ObjectAnimationUsingKeyFrames>
                                        <DiscreteObjectKeyFrame KeyTime="0:0:0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <WindowState>normal</WindowState>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                        <Trigger.ExitActions>
                            <RemoveStoryboard BeginStoryboardName="bs"/>
                        </Trigger.ExitActions>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Window.Style>

    主要思路让windowstatte绑定到一个无关紧要的且具有propertychanged的属性上。

    所以Tag是首选。

    其次是先让windowstate绑定到tag,最主要的是代码delay让数据有一个缓冲的阶段。

    同时使用触发器将值写入到tag中即可。

  • 相关阅读:
    最短路-dij
    链式前向星
    B树、B+树
    C++类
    差分约束
    数位DP
    Markdown编辑器:表格
    git使用笔记
    leetcode 162. 寻找峰值(二分)
    python matplotlib包的安装注意事项:报错——No such file or dir : tmp/matplotlib-xxxxxx
  • 原文地址:https://www.cnblogs.com/T-ARF/p/12422782.html
Copyright © 2011-2022 走看看