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指定“宽度”

假设,您将您的borderModel 放入一个网格中,我让您的代码进行了一些小的更改:

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 回答