私はc#、Silverlight、WP7を使用しています。
アプリにピボットがあり、各LoadedPivotItemイベントの後で、UIツリーを見て、各アイテムが画面上のどこにあるかを確認したいと思います。具体的には、画面左側からのxオフセットであるマージン値に関心があります。
これが私のコードです:
GeneralTransform gt = myUIElement.TransformToVisual(Application.Current.RootVisual);
double x = ((MatrixTransform)gt).Matrix.OffsetX;
Debug.WriteLine("Margin = {0}, UIElement = {1}", x, myUIElement);
アプリケーションが起動すると、このコードが実行され、印刷出力の例は次のとおりです。
Margin = 12, UIElement = System.Windows.Controls.TextBlock
問題は、スワイプして(LoadedPivotItemイベントが発生)、右側のピボットに移動すると、マージンが負の数になることです。例:
Margin = -468, UIElement = System.Windows.Controls.TextBlock
奇妙なことに、最初のピボットにスワイプして戻っても、余白の値は次のように変わります。
Margin = 492, UIElement = System.Windows.Controls.TextBlock
そして、一方向にスワイプし続けて最初のピボットに戻ると、マージンの値は次のようになります。
Margin = -468, UIElement = System.Windows.Controls.TextBlock
これらの数値はすべて画面サイズ480で相殺されていることに気づきましたが、私には一貫していないようで、画面サイズによる調整は扱いたくありません。
なぜこれが起こっているのか、そしてそれを修正する方法について何か提案はありますか?
前もって感謝します。