LayoutTransformer на Windows Phone не обновляется - PullRequest
0 голосов
/ 03 марта 2012

Я работаю над приложением WP7, используя Location Services и Bing Maps.Я бы хотел, чтобы элемент управления Bing Maps вращался, чтобы текущий курс всегда был вверху.Я понимаю, что это невозможно с элементом управления Bing Maps, поэтому я пытаюсь использовать преобразование поворота для поворота всего элемента управления.

Я использую сборку LayoutTransformerOnWindowsPhone, найденную здесь:

http://blogs.msdn.com/b/delay/archive/2010/08/26/your-phone-can-turn-into-a-robot-layouttransformer-works-great-on-the-windows-phone-platform.aspx

Когда страница загружается, элемент управления поворачивается на правильный курс, но он не продолжает вращаться при изменении курса.Вот мой код:

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 Ответ

2 голосов
/ 03 марта 2012

Похоже, вы столкнулись с ограничением 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 для нужного эффекта.

Кроме того, к вашему сведению, есть еще один способ несколько упростить это (хотя в вашем случае это не обязательно), который я обсуждаю здесь: 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

Надеюсь, это полезно! :)

...