2017-08-28 14 views
0

私はWPFを初めて使い、慣れ始めたばかりです。 ロード時に画面全体を移動したいと思います。私は現在、そのために使用するコードは次のようになります。これは私のために正常に動作している間wpfの画面を横切ってページを移動する

<Storyboard> 
    <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" BeginTime="00:00:00"> 
     <SplineThicknessKeyFrame KeyTime="00:00:00" Value="1920,0,0,0" /> 
     <SplineThicknessKeyFrame KeyTime="00:00:02" Value="0,0,0,0" /> 
    </ThicknessAnimationUsingKeyFrames> 
    <DoubleAnimation 
      Storyboard.TargetName="SummaryPageName" 
      Storyboard.TargetProperty="Opacity" 
      From="0" To="1" Duration="0:0:2" 
      AutoReverse="False"> 
    </DoubleAnimation> 
</Storyboard> 

、私が欲しいものをとにかく

<SplineThicknessKeyFrame KeyTime="00:00:00" Value="1920,0,0,0" /> 

の値フィールドにハード値(1920)を使用しないことがありますですこの値を指定せずに他の解像度でも動作するようにしてください。

ありがとうございました

+0

あなたのviewmodelプロパティに値をバインドすることをお勧めします。 その後、あなたは画面の解像度を得ることができるでしょう、私はあなたが見てみる必要があると思う:https://stackoverflow.com/questions/5082610/get-and-set-screen-resolution – pix

答えて

0

コードビハインドでKeyFrameの値を変更してください。 コードビハインドによって見つかるように、リソース名をストーリーボードリソースに割り当てる必要があります。

[XAML] 
<Storyboard x:Key="myStoryboard"> 

x:Keyを参照してStoryboardオブジェクトインスタンスを取得します。

[C#] 
private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    Storyboard s = this.Resources["myStoryboard"] as Storyboard; 
    SplineThicknessKeyFrame k = (s.Children[0] as ThicknessAnimationUsingKeyFrames).KeyFrames[0] as SplineThicknessKeyFrame; 
    k.Value = new Thickness(e.NewSize.Width,0,0,0); 
} 

また、データバインディングを使用してキーフレーム値を変更することもできます。多くのキーフレームリソースを変更する必要がある場合は、データバインディングを使用する必要があります。それ以外の場合は、手動で値を変更するのは簡単です。

+0

ありがとう、それは私のために働く –

関連する問題