ورود

View Full Version : سوال: مشکل در شروع انیمیشن



mze666
دوشنبه 26 دی 1390, 21:26 عصر
من میخوام یه stackpanel داشته باشم که همیشه به حالت چشمک زن باشه (با استفاده از خاصیت Opacity) ولی نمیدونم انیمیشن رو کجا باید قرار بدم تا هر وقت stackpanel لود میشه به صورت خودکار چشمک زن باشه.
اگر ممکنه یه راهنمایی بکنید


<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="1" To="0.6" Duration="0:0:0.9"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>

مهدی فرزاد
سه شنبه 27 دی 1390, 08:20 صبح
سلام
شما دو تا راه دارید

1- انیمیشن رو فقط برای یک StackPanel توی ویندوزتون ایجاد کنید ( در این صورت سایر StackPanel ها این انیمیشن رو ندارن ) کد :
<Window.Resources>
<Storyboard x:Key="Storyboard1" RepeatBehavior="Forever" AutoReverse="True">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="stackPanel">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded" SourceName="stackPanel">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</EventTrigger>
</Window.Triggers>

2- یک استایل برای StackPanel درست کنید و انیمیشن رو در اون اعمال کنید در این صورت هر کجا که این استایل رو به یک StackPanel اختصاص بدید اون رو اجرا میکنه

<Style x:Key="StackPanelStyle1" TargetType="{x:Type StackPanel}">
<Style.Resources>
<Storyboard x:Key="OnLoaded1" RepeatBehavior="Forever" AutoReverse="True">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="{x:Null}">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Style.Resources>
<Style.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource OnLoaded1}"/>
</EventTrigger>
</Style.Triggers>
</Style>


این استایل رو میتونید در یک ریسورس دیکشنری یا در ریسورس خود ویندوزتون ایجاد کنید

و با کدی مثل کد زیر از اون استفاده کنید

<StackPanel x:Name="stackPanel" Margin="89,69,197,159" Background="Black" Style="{DynamicResource StackPanelStyle1}"/>

mze666
یک شنبه 02 بهمن 1390, 17:52 عصر
خیلی ممنون اون مشکل حل شد.
حالا یه سوال دیگه داشتم - من یه gridview دارم تو پنجره اصلی برنامه که با زدن یه button مقدار یه cell از این gridview تغییر میکنه و رنگ اون cell عوض میشه (مثلا وقتی دکمه رو میزنیم و مقدار cell عوض میشه رنگش هم خودبه خود عوض میشه) حالا میخوام این cell مثلا 2بار هم چشمک بزنه ولی نمیدونم باید برای چه event ای بنویسم.
خود انیمیشن رو میدونم فقط اینکه تو چه event ای BeginStoryboard رو بنویسم رو نمیدوم.

اگر لطف کنید کمکم کنید ممنون میشم.