我正在将以下代码添加到我的WP7应用程序中的App.xaml.cs的构造函数中。
Resources["PhoneBackgroundBrush"] = new ImageBrush
{
ImageSource = new BitmapImage(new Uri("/images/bg.png", UriKind.Relative))
};
运行后,一旦打开应用程序,我就会收到NotImplementedException。
我们怎么能这样做?
我想要实现的是像Facebook这样的单一主题应用程序,无论手机的主题如何,都始终具有白色主题。
作为一个注释,资源上的getter始终有效,因此访问电话资源并不是完全阻止了代码。 (我用这个来确定手机的当前主题和重点)。
var a = Resources["PhoneBackgroundBrush"]; // this works fine
答案 0 :(得分:1)
基本上你得到NotImplementedException的原因是因为Application.Resources的 setter 是这样实现的:
set
{
throw new NotImplementedException();
}
Facebook全白的原因是因为他们定义了自己的色彩资源,并在各地使用它们。我还制作了一款永远白色的主题应用程序。它只需要一点额外的努力。
答案 1 :(得分:1)
对于简单的示例,当您知道如何重命名PhoneBackgroundBrush但为您的资源创建新密钥时,它并不复杂。
您需要在App.xaml中创建资源(或者您也可以在其他地方引入MergedDictionaries,但这更高级)。 Test.jpg
需要是项目中的资源文件。
在App.xaml中:
<Application.Resources>
<ImageBrush x:Key="MyImageBrush" ImageSource="Test.jpg"/>
</Application.Resources>
在页面中例如:
Background="{StaticResource MyImageBrush}"
如果你开始重新模板控件(比如一个Button),当你需要破解打开Blend并修改默认的控件样式时。它有很好的文档记录,并建立在这些相同的原则上......