我正在使用位置服务和Bing Map 开发WP7应用程序 . 我希望Bing Maps控件旋转到始终将当前 Headers 放在顶部 . 我理解这对于Bing Maps Control是不可能的,所以我试图使用旋转变换来旋转整个控件 .
我正在使用此处找到的LayoutTransformerOnWindowsPhone程序集:
当页面加载时,控件旋转到正确的 Headers ,但是当 Headers 改变时它不会继续旋转 . 这是我的代码:
XAML:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<toolkit:LayoutTransformer>
<toolkit:LayoutTransformer.LayoutTransform>
<RotateTransform x:Name="mapRotation" />
</toolkit:LayoutTransformer.LayoutTransform>
<my:Map Name="map1" Margin="0,0,0,0" CredentialsProvider="xyz"/>
</toolkit:LayoutTransformer>
</Grid>
CS:
if (Compass.IsSupported)
{
_compass = new Compass {TimeBetweenUpdates = TimeSpan.FromMilliseconds(500)};
_compass.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<CompassReading>>(compass_CurrentValueChanged);
_compass.Start();
}
void compass_ValueChanged(object sender, SensorReadingEventArgs<CompassReading> e)
{
Dispatcher.BeginInvoke(() => UpdateUI(e.SensorReading));
}
private void UpdateUI(CompassReading compassReading)
{
_currentHeading = compassReading.TrueHeading;
mapRotation.Angle = _currentHeading;
}
1 回答
听起来你正在遇到我在第三个要点讨论的Silverlight限制:http://blogs.msdn.com/b/delay/archive/2008/07/03/the-layout-system-lies-have-become-a-bit-more-elaborate-layouttransform-functionality-updated-and-enhanced-for-silverlight-2-beta-2.aspx
不幸的是,他们打破了我在那里讨论的解决方法:http://blogs.msdn.com/b/delay/archive/2008/09/29/maintaining-pretenses-with-the-layout-system-layouttransform-functionality-updated-for-silverlight-2.aspx
所以我介绍了 TransformUpdated 方法,您可以在更新RotateTransform以获得所需效果后调用该方法 .
另外,我在这里讨论的FYI(在你的情况下没有必要):http://blogs.msdn.com/b/delay/archive/2009/04/09/a-bit-more-than-meets-the-eye-easily-animate-layouttransformer-with-animationmediator.aspx
在这里:http://blogs.msdn.com/b/delay/archive/2009/04/10/a-bit-more-er-than-meets-the-eye-easily-animate-and-update-layouttransformer-with-animationmediator.aspx
我希望这是有帮助的! :)