我正在使用 c#、Silverlight、WP7。
我的应用程序中有一个 Pivot,在每个 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
奇怪的是,即使我滑回第一个 Pivot,边距上的值也会变为:
Margin = 492, UIElement = System.Windows.Controls.TextBlock
如果我继续向一个方向滑动并最终回到第一个 Pivot,则边距上的值变为:
Margin = -468, UIElement = System.Windows.Controls.TextBlock
我意识到这些数字都被 480 的屏幕尺寸所抵消,但对我来说似乎不一致,我不想处理通过屏幕尺寸进行的调整。
关于为什么会发生这种情况以及如何解决它的任何建议?
提前致谢。