WPF 使用触发器让窗口无法最大化且同时可以调整窗口大小
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 使用触发器让窗口无法最大化且同时可以调整窗口大小相关的知识,希望对你有一定的参考价值。
原文: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中即可。
以上是关于WPF 使用触发器让窗口无法最大化且同时可以调整窗口大小的主要内容,如果未能解决你的问题,请参考以下文章