سلام من با استفاده از Blend for visual studio اومدم یک انیمیشن برای یک دکمه توی صفحه ام گذاشتم .
و اون دکمه هم توی رویداد یکسری عملیات انجام میشه.
این انیمیشن اگر روی رویداد ماوس اور یا همون زمانی که ماوس فقط بیاد روی رکمه وایسه اجرا میشه و مشکلی نداره
اما اگر این انیمیشن رو بیام توی رویداد Click یا حتی PreviewMouseDown انیمیشن ناقص اجرا میشه انگار که رویداد کلیک باتن از همه اولویت داره و نمیذاره چیزه دیگه ای اجرا بشه.
به عبارتی انیمیشن بعد از یک لحظه شروع متوقف میشه. تا عملیات دکمه انجام بشه بعد انیمیشن رو ادامه میده
چیکار کنیم که این مشکل حل بشه.
در Blend :
در XAML :
<Window.Resources>
<Storyboard x:Key="RotationBtn">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="Command4">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="720"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="UIElement.PreviewMouseDown" SourceName="Command4">
<BeginStoryboard x:Name="RotationBtn_BeginStoryboard" Storyboard="{StaticResource RotationBtn}"/>
</EventTrigger>
</Window.Triggers>
<Grid>
<Button x:Name="Command4" Content="Next Stage" Margin="599,406,304,84" Width="130" Height="37" FontSize="8" Click="Command4_Click" Background="#FFDDDDDD" BorderBrush="{x:Null}" RenderTransformOrigin="0.5,0.5">
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Button.RenderTransform>
</Button>
</Grid>
در سی شارپ کد :
private void Command4_Click(object sender, RoutedEventArgs e)
{
var MyQuery = dbms.Database.SqlQuery<DB_Cust>("SELECT * FROM Customers").ToList();
}
من یک راهی که اودم امتحان کنم اینه که بهش Thread بدم اما این هم درست کار نمیکنه :
راه حل تستی اول
private void Command4_Click(object sender, RoutedEventArgs e)
{
Thread trd = new Thread(() =>
{
Dispatcher.Invoke((Action)(() =>
{
Storyboard sb = TryFindResource("RectangleSlider") as Storyboard;
Storyboard.SetTarget(sb, Command4 );
sb.Begin();
}));
});
var MyQuery = dbms.Database.SqlQuery<DB_Cust>("SELECT * FROM Customers").ToList();
}
راه حل تستی دوم
private void Command4_Click(object sender, RoutedEventArgs e)
{
new Thread(() =>
{
App.Current.Dispatcher.Invoke((Action)delegate
{
Storyboard sb = TryFindResource("RectangleSlider") as Storyboard;
Storyboard.SetTarget(sb, Command4);
sb.Begin();
});
}).Start();
var MyQuery = dbms.Database.SqlQuery<DB_Cust>("SELECT * FROM Customers").ToList();
}
این دوتا راه حلی که تست کردم فایده ای نداشت
این لینکی که توی استک اورفلو گذاشتم :
How to fix Animation Does not correct working after running Button's Event in C# WPF
لطفا راهنمایی بفرمایید
باتشکر از همگی
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
346
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
312
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4263
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4279
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3875
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
654
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3170
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3250
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
58
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
97
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1348
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|