2013-04-22 1 views
2

Я использую этот код для объекта одушевленного с левой стороны краяАнимация с Margine в МОФ

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); 

я не буду скрывать и показывать объект. Скажите, пожалуйста, где я ошибаюсь?

ответ

0

Это может иметь несколько причин. Потому что вы вставили не все код, я не могу анализировать следующие возможности:

  • Вашей раскадровка не создана правильно
  • Вашего borderModel находится в панельном/ContentControl, где маржа игнорировала
  • You не существует «Ширина» указано для 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); 
+0

Спасибо Bernhard Krenz за его работу –

Смежные вопросы