PDA

View Full Version : سوال: مشکل با ایجاد انیمیشن Window در دیکشنری



sinaone1
چهارشنبه 25 اسفند 1389, 08:22 صبح
سلام اول از اینکه این سکشن انقدر اکتیوه از تمام دوستان تشکر میکنم
و دوم اینکه یه سئوال داشتم : من میخوام در دیکشنری یک انیمیشن ایجاد کنم که مثلا مثل ویندوز 7 زمانی که پنجره باز شد به صورت انیمیشنی باز بشه ولی یه مشکل دارم و اینه که actualheight , width و یا width و height اندازه واقعی اون پنجره رو نمیدند و مشکل ساز شده
plz help me
thanx

مهدی فرزاد
چهارشنبه 25 اسفند 1389, 09:18 صبح
سلام
دوست عزیز این مسئله یک نکته ریز داره که من با مثالی و کدی که در زیر مینویسم براتون توضیحش میدم

من توی کلاسی که برای مدیریت استایل ویندوز درست کردم (مراجعه به آموزش نهم من ) این متد رو برای انیمیشن اضافه میکنم

void Loaded(object sender, RoutedEventArgs e)
{
Window window = ((FrameworkElement)sender).TemplatedParent as Window;
if (window != null)
{
System.Windows.Media.Animation.DoubleAnimation AnimatinFadIn = new System.Windows.Media.Animation.DoubleAnimation();
AnimatinFadIn.From = 0;
AnimatinFadIn.To = window.ActualHeight;
AnimatinFadIn.Duration = new Duration(TimeSpan.FromSeconds(0.5));
window.BeginAnimation(Window.HeightProperty, AnimatinFadIn);
}
}


حالا باید اونو به استایل معرفی کنم نکته اینجاست که من بشکل زیر اونو معرفی میکنم

<Style x:Key="DarkWin" TargetType="{x:Type Window}">

.
.
.
<EventSetter Event="Loaded" Handler="Loaded"/>


شما با روشی که من گفتم میتونید انواع انیمیشن هایی که که با تغییر Property های یک کنترل که دارای مقدار عددی هستند مثل Opacity ، کار میکنن رو ایجاد کنید

مثلا برای آهسته ظاهر شدن فرم

void Loaded(object sender, RoutedEventArgs e)
{
Window window = ((FrameworkElement)sender).TemplatedParent as Window;
if (window != null)
{
System.Windows.Media.Animation.DoubleAnimation AnimatinFadIn = new System.Windows.Media.Animation.DoubleAnimation();
AnimatinFadIn.From = 0;
AnimatinFadIn.To = 1;
AnimatinFadIn.Duration = new Duration(TimeSpan.FromSeconds(0.25));
window.BeginAnimation(Window.OpacityProperty, AnimatinFadIn);
}
}


دوفایل ضمیمه رو ببینید
موفق باشید