我的应用程序发生了一些奇怪的黑魔法。
我在样式字典中定义了一个 ImageBrush:
<classes:MultiResImageChooser x:Key="MultiResImageChooser"/>
<ImageBrush x:Name="SplashScreenImageBrush"
ImageSource="{Binding SplashScreenResolutionImage, Source={StaticResource MultiResImageChooser}}"
Stretch="Fill" />`
MultiResImageChooser 类有一个简单的属性:
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 元素的背景属性:
<Border x:Name="SplashScreen"
Background="{StaticResource SplashScreenImageBrush}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
所以,问题是当我在 WP8 模拟器或 WP8 设备上调试应用程序时,一切正常。在未调试的情况下启动应用程序时,Border 背景属性呈现为白色。图像文件包含在项目中,并将 Build Action 设置为 Content。
此外,如果我将 ImageSource 直接设置为图像路径,则一切正常。
所以,问题似乎是 MultiResImageChooser,但我不知道它可能有什么问题。
任何帮助或提示将不胜感激。
顺便说一句,这个问题不会在 w WP7.1 设备和模拟器上重现。