アプリで奇妙な黒魔術が行われています。
スタイル ディクショナリで ImageBrush を定義しました。
<classes:MultiResImageChooser x:Key="MultiResImageChooser"/>
<ImageBrush x:Name="SplashScreenImageBrush"
ImageSource="{Binding SplashScreenResolutionImage, Source={StaticResource MultiResImageChooser}}"
Stretch="Fill" />`
MultiResImageChooser クラスには、単純なプロパティが 1 つあります。
public class MultiResImageChooser
{
public BitmapImage SplashScreenResolutionImage
{
get
{
switch (ResolutionHelper.CurrentResolution)
{
case Resolutions.HD720p:
return new BitmapImage(new Uri("/Images/SplashScreenImage.Screen-720p.jpg", UriKind.Relative));
case Resolutions.WXGA:
return new BitmapImage(new Uri("/Images/SplashScreenImage.Screen-WXGA.jpg", UriKind.Relative));
case Resolutions.WVGA:
return new BitmapImage(new Uri("/Images/SplashScreenImage.Screen-WVGA.jpg", UriKind.Relative));
default:
throw new InvalidOperationException("Unknown resolution type");
}
}
}
}
SplashScreenImageBrush は、Border 要素の background プロパティにバインドされます。
<Border x:Name="SplashScreen"
Background="{StaticResource SplashScreenImageBrush}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
したがって、問題は、WP8 エミュレーターまたは WP8 デバイスでアプリケーションをデバッグすると、すべて正常に動作することです。デバッグなしでアプリを起動すると、Border background プロパティは White にレンダリングされます。画像ファイルがプロジェクトに含まれ、ビルド アクションがコンテンツに設定されます。
また、ImageSource を画像パスに直接設定すると、すべてが機能します。
したがって、問題は MultiResImageChooser にあるようですが、何が問題なのかわかりません。
どんな種類の助けやヒントも大歓迎です。
ところで、この問題は WP7.1 デバイスとエミュレーターでは再現されません。