2

私の質問は、パノラマアイテムのLayoutUpdatedイベントを再確認します。LayoutUpdatedイベントを割り当てるアイテムは関係ありません。アイテムをスクロールしても、起動しません。これが私のコードです:

<controls:Panorama Grid.Row="2" x:Name="WebScrollView" >
    <!--Panorama item one-->
    <controls:PanoramaItem Width="480" x:Name="LeftPanoramaControl"/>

    <!--Panorama item two-->
    <controls:PanoramaItem Width="480" x:Name="MiddlePanoramaControl"/>
    <controls:PanoramaItem Width="480" x:Name="RightPanoramaControl"/>
</controls:Panorama>

私のC#クラスでは、次のように述べています。

private void BrowsersLoaded( )
{
    //first, we stop the progressbar
    AnimatedProgressBar.StopProgressBar( );

    //next, we want to make sure that the left and right browser are going to load new content, as now, for instance, the left browser is placed upon the middlecontent
    //so, we cannot just say _leftBrowser.Navigate, this will screw up the view
    LeftPanoramaControl.Visibility   = _leftControlVisibility;
    RightPanoramaControl.Visibility  = _rightControlVisibility;

    WebScrollView.UpdateLayout( );
    WebScrollView.DefaultItem = MiddlePanoramaControl;                                   
    //this seems like beating around the bush, doesm't it? 
    //well, A problem I encountered was that the LayoutUpdated event was called even before I could do anything, check whatever boolean, cause they were all
    //set to true even before the event was fired, which called upon the CheckID method, and gave a huge infinite loop. 

    MiddlePanoramaControl.LayoutUpdated += new EventHandler( WebScrollView_LayoutUpdated );
}

ただし、パノラマアイテムをスクロールしても起動しません。誰かがその理由を知っていますか?

greetz、Geekpeek

4

1 に答える 1

2

MSDNから:

現在のディスパッチャに関連付けられているさまざまな視覚要素のレイアウトが変更されたときに発生します。

これまで見てきたように、LayoutUpdatedイベントは任意のUI要素で処理でき、このイベントの処理に使用する要素に関係なく同じ結果を生成します。また、sender引数がalawysnullであることに注意してください。

さて、パノラマアイテムをスクロールすると、なぜ発火しないのですか?このLayoutUpdatedイベントは、Silverlightフレームワークがレイアウトパスを実行するたびに発生します。つまり、ビジュアルツリーと、ツリー内のさまざまなパネルおよび要素の特性に基づいて、各UI要素の位置を計算します。

携帯電話の画面で何かが動くのを見たからといって、レイアウトパスが発生したことを意味するわけではありません。設定したアニメーションでRenderTransformsは、レイアウトは変更されません。

レイアウトは高価なので、パノラマコントロールは、アイテムのスクロールを開始する前に、各アイテムのレイアウトが決定されるように設計されていると思います。

代わりにPanorama.SelectionChangedイベントを処理してみませんか?

于 2012-04-11T12:18:57.260 に答える