В качестве обходного пути, вот что я сделал:
Создайте Image
в XAML внутри Grid
(а НЕ внутри Canvas
, как это предлагается в документах msdn)
<Image Name="ExtSplash"
Stretch="Uniform"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Source="Assets/Splash/SplashScreen.png"/>
Теперь хитрость заключается в том, чтобы заставить его работать как на мобильном устройстве (который не дает правильных координат Rect
, так и на рабочем столе (который работает, как и ожидалось).
Итак, в загруженном событии Page
в коде позади я использовал этот код:
if (splash.Top < splash.Left)
ExtSplash.Margin = new Thickness(splash.Top);
else
ExtSplash.Margin = new Thickness(splash.Left);
где Splash = e.SplashScreen.ImageLocation
из события OnLaunched в App.xaml.cs.
Это работает, потому что Splash.Top
и Splash.Left
возвращают 0 в случае Mobile. Таким образом, приложение просто отображает заставку, полностью растянутую по ширине. В случае рабочего стола изображение может иметь некоторые левые или верхние координаты, поскольку они правильно отображаются на рабочем столе, где я установил их как Margin
для выровненного по центру однородного растянутого изображения.
ПРИМЕЧАНИЕ 1. Могут быть случаи, когда между экраном-заставкой и изображением расширенной заставки могут возникать небольшие различия. Но в моем тесте он работал нормально. Он будет продолжать работать, даже если в более поздней сборке MS исправит проблему, поэтому вы можете не торопиться, чтобы реализовать стандартный метод тогда.
ПРИМЕЧАНИЕ 2. У меня были некоторые проблемы с этой логикой, если было предоставлено изображение заставки масштаба-400. По какой-то причине WM10 подхватывает самое высокое доступное разрешение. Поэтому я просто предоставил изображения в масштабе 100, 125, 150 и 200 (пропустил 400).
person
Saurabh3321
schedule
13.10.2015