我有一个Silverlight 5 OOB应用程序。我想创造'吐司'。由于局限性,我不想使用NotificationWindows。
我尝试创建一个S5窗口并将其滑动到屏幕上。 [原油,但这是一个开始。]如果我在主窗口使用一个按钮来触发创建而另一个按钮触发动画,它就可以了。如果我把动画放到第一个方法中,窗口就会出现,没有动画。有谁知道我如何才能做到这一点。
要在MainPage.xaml中的网格内重新创建,请添加:
<Button Content="Show" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0"
Name="show" VerticalAlignment="Top" Width="75" Click="show_Click" />
<Button Content="Move" Height="23" HorizontalAlignment="Left" Margin="12,41,0,0"
Name="move" VerticalAlignment="Top" Width="75" Click="move_Click" />
在MainPage.xaml.cs中,添加:
private Window toastWindow;
private void show_Click(object sender, RoutedEventArgs e)
{
toastWindow = new Window();
toastWindow.Width = 280;
toastWindow.Height = 58;
toastWindow.Left = 975;
toastWindow.Top = 755;
toastWindow.WindowStyle = WindowStyle.None;
toastWindow.WindowState = WindowState.Normal;
toastWindow.Content = new Toast();
toastWindow.Show();
toastWindow.Activate();
//for (int i = 0; i < 20; i++)
//{
// toastWindow.Top = toastWindow.Top - 5;
// System.Threading.Thread.Sleep(25);
//}
}
private void move_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 20; i++)
{
toastWindow.Top = toastWindow.Top - 5;
System.Threading.Thread.Sleep(25);
}
}
你还需要一个名为Toast的UserControl(在Toast.xaml中),在其中我给LayoutRoot网格一个背景色,这样很明显,即使是通过开始栏,Width =“300”Height =“100 ”
在Silverlight 5 Properties页面上,您需要在浏览器外启用正在运行的应用程序,并在浏览器外设置中设置在浏览器外部运行时需要提升信任。
如果您运行它并单击显示,您将看到开始条形码/时钟区域后面的吐司。如果单击“移动”,则会向上滑动。如果取消注释show_Click方法的结尾并再次运行它并单击“显示”,它将显示在其最终位置而不会滑动。
有什么想法吗?
P.S。最终,我希望能够在屏幕上同时拥有多个“切片”,并且具有独立的生命周期。
答案 0 :(得分:1)
你的'移动'代码目前是同步的,这意味着它会阻止UI线程,这非常非常糟糕。
您可以使用DispatcherTimer
代替这种效果。