2

私は左側の余白からオブジェクトをアニメーション化するためにこのコードを使用しています

ThicknessAnimation da = new ThicknessAnimation();
        double width = borderModel.Width;
        if (ConstantValue.HideShowModelPanel == false)
        {

            da.From = new Thickness(0,0,0,6);
            da.To = new Thickness(-width,0,0,6);
            da.Duration = TimeSpan.FromSeconds(0.8);
            ConstantValue.HideShowModelPanel = true;
        }
        else
        {
            da.From =new Thickness(-width,0,0,6);
            da.To = new Thickness(0,0,0,6);
            da.Duration = TimeSpan.FromSeconds(0.2);
            ConstantValue.HideShowModelPanel = false;
        }
        Storyboard.SetTarget(da, borderModel);
        Storyboard.SetTargetProperty(da, new PropertyPath("Margin"));
        story.Children.Add(da);
        story.Begin();
        //borderModel.BeginAnimation(new PropertyPath("Margin"), da);

オブジェクトを表示したり隠したりすることはありません。どこが間違っているのか教えてください。

4

1 に答える 1

0

これにはいくつかの理由が考えられます。すべてのコードを貼り付けたわけではないため、次の可能性を分析できません。

  • ストーリーボードが正しく作成されていません
  • あなたのボーダーモデルは、マージンが無視されるパネル/コンテンツコントロールに配置されます
  • borderModel に「幅」が指定されていません

borderModel を Grid に配置すると、小さな変更でコードが機能するようになります。

ThicknessAnimation da = new ThicknessAnimation();
double width = borderModel.ActualWidth;
if (ConstantValue.HideShowModelPanel == false)
{
 da.From = new Thickness(0, 0, 0, 6);
 da.To = new Thickness(-width, 0, 0, 6);
 da.Duration = TimeSpan.FromSeconds(0.8);
 ConstantValue.HideShowModelPanel = true;
}
else
{
 da.From = new Thickness(-width, 0, 0, 6);
 da.To = new Thickness(0, 0, 0, 6);
 da.Duration = TimeSpan.FromSeconds(0.2);
 ConstantValue.HideShowModelPanel = false;
}
   
borderModel.BeginAnimation(FrameworkElement.MarginProperty, da);
于 2013-04-22T12:39:54.003 に答える