Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > WPF и Silverlight > ResourceDictionary и доступ к Style определенному |
Автор: Человек01 13.3.2009, 18:39 | ||
Диспозиция: Определяю набор стилей в отдельном файле, допустим mystyles.xaml:
Потом хочу применить определенные стили из этого файла к определенным элементам. Понятно если из дизайнера делать, то сначала: <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="mystyles.xaml" /> </ResourceDictionary.MergedDictionaries> А далее, вот что делать? Вопрос: Какой синтаксис должен быть для доступа к ним, из кода и(или) из дизайнера xaml P.S.:Вариант с <Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}" .... что бы автоматом ко всем TextBox применялась, не подходит. |
Автор: Человек01 13.3.2009, 20:23 | ||||
Ответ: main.xaml
В рабочем файле:
либо из кода: qwe.Style = (Style)this.Resources["textblok"]; P.S.: Извините за простецкий вопрос, просто, что то парился и не получалось в сложном проекте, сделал для пробы простенький, все получилось, видимо я где то стиль на Load переопределяю ![]() |
Автор: Человек01 13.3.2009, 21:29 | ||||||||||
В продолжение темы: Диспозиция: Создаю класс:
Вопрос: собственно в коде ![]() Пробовал так:
Но ошибка
Что делать? Если сделать так:
Тогда ошибка:
Может это наведёт кого на мысль... Что то я уже париться начинаю. ![]() |
Автор: Человек01 13.3.2009, 21:53 | ||
Для примера: 1.Расположить рядом с исполняемым файлом main.xaml 2.И сделать так:
То всё работает! Соответственно остаётся вопрос, как получить main.xaml который находится в самом проекте, со всеми вытекающими? |
Автор: Человек01 13.3.2009, 22:31 | ||
Всё разобрался. ![]() Как я понял проблема была в том что XamlReader.Load работает с StreamResourceInfo(s).ContentType = application/xaml+xml а Application.GetResourceStream получал application/baml+xml с которым работает Application.LoadComponent Вот:
Вот, пользуемся и говорим Человеку спасибо ![]() |
Автор: Partizan 13.3.2009, 22:35 | ||
Человек01, если main.xaml представляет собой ResourceDictionary со стилями, то достаточно просто ResourceDictionary получить из xaml как-то так: .
p.s. может и нескомпилиться...по памяти писал... если отвалится в рантайме, то можно при создании объекта Uri прописать абсолютный путь в синтаксисе pack://... Добавлено через 1 минуту и 53 секунды Человек01, ты б взял книжку какую...Adam Nathan "WPF Unleashed" - хорошая книжка...ну или Петцольда на крайний случай...сразу половина вопросов отпадёт... |
Автор: PashaPash 13.3.2009, 22:43 | ||
Человек01, о как набежали все помогать ![]() судя по invalid character, у тебя main.xaml как Embedded Resource лежит, т.е. не xaml, а baml.
|
Автор: Partizan 13.3.2009, 22:47 | ||
PashaPash, не набежали, а вернулись с работы) |
Автор: Человек01 13.3.2009, 23:01 |
Вот что бывает если не успеешь галочку "Пометить как решённый" поставить ![]() Где же вы братцы были четыре часа назад ![]() Partizan, а UriKind.Unknown - у меня что то нет такого параметра, а с new ResourceDictionary вообще не принимает параметров. Или я что то не так делаю? А по поводу книг, у меня в наличии только Мэтью Мак-Дональд WPF в NET 3.5 А вообще с книгами такими, у нас в городе проблемы, хорошо если доходят через год-полтора. Заказывать, - идет долго, я от ожидания сума сойду ![]() А скачать, не знаю что качать... Ткните пальцем (имеется в виде даже не ссылки, а просто названия, желательно с приблизительным качеством и ориентированностью содержания ![]() Если честно единственная связь с миром, вот форум (хоть какое то профессиональное общение ![]() PashaPash, спасибо за ответ, мне нравится, - элегантненько. Хотя мой способ тоже работает. P.S.: Ага набежали вы сразу, скопом, явно ждали... |
Автор: Partizan 13.3.2009, 23:04 | ||
Человек01,
|
Автор: Человек01 13.3.2009, 23:14 | ||
Partizan, Спасибо работает. В продолжение темы новый вопрос. Диспозиция: проделываю всё вышесказанное в public class ExTextBox : TextBox и определяю его в dll далее по тексту, в новом приложении прикрепляю dll(содержащий ExTextBox) как References пытаюсь поставить в приложение ExTextBox, с наивной надеждой что то вставиться со всеми применёнными стилями, но не чаго не получается, кроме:
Как поступить? Цель у меня такая: ExTextBox наследованный от TextBox в котором я определяю его поведение, реагирование на Eventы и добавляю несколько параметров public String qwe{get;set;}, так же настраивается внешний вид(Вот с последним и бьюсь) Может у меня просто не правильный подход, для достижения данной цели? |
Автор: Человек01 14.3.2009, 07:44 | ||
PashaPash, огромнейшее спасибо. Сделал так:
в надежде что test01.dll будет всегда рядышком с исполняемым файлом Работает, Всем ещё раз огромнейшее спасибо. ![]() |