先上代碼: <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綁定到一個無關(guān)緊要的且具有propertychanged的屬性上。 所以Tag是首選,。 其次是先讓windowstate綁定到tag,,最主要的是代碼delay讓數(shù)據(jù)有一個緩沖的階段。 同時使用觸發(fā)器將值寫入到tag中即可。
|
|