【KBJ10064】xamWebTileView でアニメーション開始・終了時のイベントを取得したい

0 ユーザーが評価
この投稿には確認済みの回答があります。 0 返信 | 1 サポーター

トップ 10 投稿者 
男性
投稿 45
IG Employee
[IG] 山田 達也 投稿済み: 2010/3/31 20:12

【概要】
xamWebTileViewで最大化・最小化状態を切り替える際のパフォーマンスチューニングの一環として、アニメーションの開始・終了時のイベントをハンドルして何らかの処理を行う方法を説明します。
 
【該当するコンポーネント】
 
【該当するバージョン】
全てのバージョン
 
【記事の種類】
How-to
 
【詳細】
xamWebTileViewで、アニメーションの開始・終了をハンドルするためには、TilePanelクラスを用います。
 
【TilePanelクラス】
 
 
実際に使用されるTilePanelオブジェクトは、xamWebTileViewの最大化状態変更処理の中で動的に取得する必要があります。以下がそのコード例となります。
 
(C#)
 
private bool isInitialized = false;
 
/// <summary>
/// 初回のMaximizedStateChanging のタイミングで、各Paneを格納するTilePanelを取得してAnimation関連のイベントをハンドルする
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void XamWebTileView_MaximizedStateChanging(object sender, Infragistics.Silverlight.TileStateChangingEventArgs e)
{
 
    TilePane tile = e.Element as TilePane;
 
    TilePanel panel = tile.Parent as TilePanel;
 
    if (panel != null)
    {
        if (isInitialized) return;
        isInitialized = true;
 
        panel.AnimationStarted += new EventHandler<EventArgs>(panel_AnimationStarted);
        panel.AnimationCompleted += new EventHandler<EventArgs>(panel_AnimationCompleted);
    }
 
}
 
void panel_AnimationStarted(object sender, EventArgs e)
{
    //表示中のタイルを対象にアニメーション開始時の処理を行います
    foreach (TilePane tile in this.tileView.VisibleTiles)
    {
        //一旦TagにContentを退避し、一時的なContentに差し替え
        tile.Tag = tile.Content;
        tile.Content = "更新中";
    }
}
 
void panel_AnimationCompleted(object sender, EventArgs e)
{
    foreach (TilePane tile in this.tileView.VisibleTiles)
    {
        tile.Content = tile.Tag;
    }
}

  • 以下に保存:
ページ 1 / 1 (1 項目) | RSS
Infragistics Japan
インフラジスティックス ジャパン