2016-07-25 13 views
1

を最大化されている場合:ウィンドウアニメーションウィンドウ状態は、私は窓を次のコードでロードされたときにアニメーションでスライド適用してい

<Window.Triggers> 
    <EventTrigger RoutedEvent="Window.Loaded"> 
     <EventTrigger.Actions> 
      <BeginStoryboard> 
       <Storyboard BeginTime="0" Duration="0:0:1"> 

        <DoubleAnimation Storyboard.TargetName="parent" Storyboard.TargetProperty="(Window.Left)" From="1920" To="0" AutoReverse="true" BeginTime="0:0:0" Duration="0:0:1" /> 
       </Storyboard> 
      </BeginStoryboard> 


     </EventTrigger.Actions> 
    </EventTrigger> 
</Window.Triggers> 

それは正常に動作しますが、私はのWindowStateを有効にすると=に「最大化」をメインウィンドウ、アニメーションは機能しません。

答えて

1

これはWindowsでの制限です.WPFではなく、ウィンドウの位置を最大化すると変更できません。アニメーションは実際に実行されますが(Left値の変更)、効果はありません。このコードは、単一のモニタを搭載したシステムのために正しく動作します

<Window x:Class="WpfApp.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:app="clr-namespace:WpfApp" 
     Name="parent" 
     WindowState="Normal" 
     Top="0" 
     Left="{x:Static SystemParameters.FullPrimaryScreenWidth}" 
     Width="{x:Static SystemParameters.FullPrimaryScreenWidth}" 
     Height="{x:Static SystemParameters.FullPrimaryScreenHeight}" 
     d:DataContext="{d:DesignData ViewModel}"> 
    <Window.Triggers> 
     <EventTrigger RoutedEvent="Window.Loaded"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="parent" 
             Storyboard.TargetProperty="(Window.Left)" 
             To="0" 
             Duration="0:0:1" /> 
         <ObjectAnimationUsingKeyFrames Storyboard.TargetName="parent" 
                 Storyboard.TargetProperty="WindowState"> 
          <DiscreteObjectKeyFrame Value="{x:Static WindowState.Maximized}" 
                KeyTime="0:0:1" /> 
         </ObjectAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </Window.Triggers> 

注:あなたが何ができるか

は、それがNormal状態でいながら窓をアニメーションとアニメーションが完了すると、それを最大化です。それ以外の場合は、WindowsフォームScreenを使用して、すべての画面の幅/高さの値を初期化する必要があります。

関連する問題