NotImplementedException при переопределении ресурсов телефона по умолчанию - PullRequest
3 голосов
/ 22 июля 2011

Я добавляю следующий код в конструктор App.xaml.cs в моем приложении WP7.

Resources["PhoneBackgroundBrush"] = new ImageBrush
{
    ImageSource = new BitmapImage(new Uri("/images/bg.png", UriKind.Relative))
};

после его запуска я получаю NotImplementedException после открытия приложения.

Есть идеи о том, как мы можем это сделать?

Я пытаюсь добиться единого тематического приложения, такого как Facebook, которое всегда имеет белую тему независимо от темы телефона.

Как примечаниеГеттер на ресурсах всегда работает, так что доступ к ресурсам телефона полностью не заблокирован кодом.(Я использую это, чтобы определить текущую тему и акцент телефона).

var a = Resources["PhoneBackgroundBrush"]; // this works fine

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Для простых примеров это не сложно, когда вы знаете, как, однако вам не следует переименовывать PhoneBackgroundBrush, а создавать новый ключ для своих ресурсов.

Вам необходимо создать ресурсы в App.xaml (или вы можете использовать MergedDictionaries в других местах, но это более продвинутое). Test.jpg должен быть файлом ресурсов в вашем проекте.

В приложении. Xaml:

<Application.Resources>
    <ImageBrush x:Key="MyImageBrush" ImageSource="Test.jpg"/>
</Application.Resources>

На странице, например:

Background="{StaticResource MyImageBrush}"

Если вы начинаете повторно шаблонировать элемент управления (скажем, кнопку), тогда вам нужно взломать Blend и изменить стили элементов управления по умолчанию. Это довольно хорошо задокументировано и основано на тех же принципах ...

1 голос
/ 22 июля 2011

По сути, вы получаете исключение NotImplementedException, потому что setter для Application.Resources реализован так:

set 
{
    throw new NotImplementedException();
}

Причина, по которой Facebook полностью белый, заключается в том, что они определили свои собственные цветовые ресурсы и использовали их повсюду. Я также сделал всегда белое тематическое приложение. Это просто требует немного дополнительных усилий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...