2009-11-02 2 views
1

Я создал что-то вроде this и this.
Фактически, у меня есть dll, который поставляет мне «стайлер» для моего приложения - он содержит все мои базовые стили, а также фабрику для вызова StylerFactory.DefaultStyler.ApplyStyles(this) на приложение - которое объединяет поставляемые ResourceDictionaries с существующим. Таким образом, мне не нужны все основные стили в моих компонентах, и мне не нужны явные ссылки на мои sesource-xaml-файлы.
Теперь - пока это работает очень хорошо. Стили (очевидно) не видны во время разработки На мои вопросы:Дизайнерские временные словари

  1. Был такой подход мудрым, или это было бы лучше, чтобы развернуть XAML-ресурсы и использовать их в любом приложении/окна/управления?
  2. Кто-нибудь видит какую-либо возможность применить мои стили к дизайну VS2008?
+0

Поскольку этот вопрос немного устарел, и многие из этих ответов устарели: я хочу отметить, что Expression Blend (я не знаю, разрешено ли это в прошлом) поддерживает словари ресурса времени разработки. – Warty

ответ

0

На мой взгляд, это приемлемый подход. Причина в том, что я не видел лучшего метода.

В моих собственных случаях я загрузил ресурсные словари во время выполнения using the code I described here, что, как я полагал, будет работать и для загрузки ресурсов из других сборок. Недостатком является то, что разработчик не будет запускать этот код первым, что означает, что по умолчанию стиль не применяется, что вы испытываете.

Чтобы противодействовать этому, я добавил определение по умолчанию <ResourceDictionary.MergedDictionaries> в каждом из моих <Window.Resources>, которое мне нужно было отредактировать во время разработки. В то время как это заканчивается немного избыточным, это позволило мне иметь рабочее окно разработки, в то время как надлежащий MergedDictionary можно загрузить позже во время выполнения. Возможно, вы можете использовать это, чтобы найти лучший метод.

+0

Будет ли то, что вы описываете на вопросе # 786183, - это то, что я делаю, однако у меня есть файлы xaml в качестве встроенных ресурсов. Итак, чтобы сделать так, как вам было предложено, мне пришлось бы дублировать файлы ресурсов тоже ... – Nils

+0

Даже с файлом ресурсов как встроенным ресурсом в другой DLL, я бы подумал, включая ресурс, как указано в http: // stackoverflow .com/questions/946869/is-it-possible-to-share-a-resourcedictionary-file-between-multiple-projects должны работать. Вы пробовали это и обнаружили, что это не так? –

+0

Да и нет, конечно. Если бы я включил ресурсы, которые дизайнер покажет им, но тогда у меня будут ресурсы в два раза и три раза. Я начинаю с того, что было бы лучше просто создать один xaml-файл, включенный в источник, используя svn: external - таким образом, я уверен, что есть только одна «настоящая» копия, и разработчик отображает изменения ... – Nils

Смежные вопросы