如何将Silverlight 5窗口滑动到屏幕上?

时间:2012-07-12 13:39:42

标签: silverlight silverlight-5.0 toast out-of-browser

我有一个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。最终,我希望能够在屏幕上同时拥有多个“切片”,并且具有独立的生命周期。

1 个答案:

答案 0 :(得分:1)

你的'移动'代码目前是同步的,这意味着它会阻止UI线程,这非常非常糟糕。

您可以使用DispatcherTimer代替这种效果。