اجرا و نمایش انیمیشن در WPF هنگام کلیک روی دکمه
سلام من با استفاده از 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
لطفا راهنمایی بفرمایید
باتشکر از همگی
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول