0

Silverlight 5 OOB アプリがあります。「トースト」を作りたい。制限があるため、NotificationWindows を使用したくありません。

S5 ウィンドウを作成して画面にスライドさせてみました。[粗雑ですが、それは始まりです。] メイン ウィンドウの 1 つのボタンを使用して作成をトリガーし、別のボタンを使用してアニメーションをトリガーすると、機能します。アニメーションを最初のメソッドに入れると、ウィンドウだけが表示され、アニメーションは表示されません。誰も私がこれを機能させる方法を知っていますか?

再作成するには、MainPage.xaml の Grid 内に次を追加します。

<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.xaml 内の) Toast という名前の UserControl も必要です。ここでは、LayoutRoot Grid に背景色を指定して、Width="300" Height="100" でスタート バーからでもわかるようにします。

[Silverlight 5 のプロパティ] ページで、ブラウザー外でのアプリケーションの実行を有効にする必要があります。また、ブラウザー外の設定で、[ブラウザー外で実行する場合は昇格された信頼が必要] を設定する必要があります。

実行して [表示] をクリックすると、スタート バー/クロック領域の後ろにトーストが表示されます。[移動] をクリックすると、上にスライドします。show_Click メソッドの末尾のコメントを外して再度実行し、[表示] をクリックすると、スライドせずに最終的な位置に表示されます。

何か案は?

PS 最終的には、独立した寿命でいつでも複数の「スライス」を画面に表示できるようにしたいと考えています。

4

1 に答える 1

1

あなたの「移動」コードは現在同期的です。つまり、UI スレッドをブロックします。これは非常に悪いことです。

DispatcherTimer代わりに、そのような効果を行うために a を使用できます。

于 2012-07-12T15:23:23.167 に答える