Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Один контрол, много шаблонов 
:(
    Опции темы
dazy
Дата 9.4.2009, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Подскажите, как лучше реализовать сценарий:

Нужно нарисовать облака. Всего типов облаков будет 5-7.
Поведение/анимация у всех облаков одинаковая, но различается их внешний вид. Не кардинально, но все же.

Мне видится такой подход:
Сделать контрол КлоудАнимейшнКонтрол в который поместить всю анимацию облака (она примитивная) и еще поместить туда же контрол КлоудКонтрол.
А вот к этому КлоудКонтролу применять различные темплейты в зависимости от типа облака.

Стоит ли так делать, или есть более подходящий вариант?
Как сказать КлоудКонтролу что нужно грузить свой внешний вид из какого-то определенного темплейта?

За примеры буду весьма признателен!
PM MAIL   Вверх
Idsa
Дата 9.4.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Задача: подменить часть контрола
Решение: использовать темплейт

Все верно smile

Цитата(dazy @  9.4.2009,  22:13 Найти цитируемый пост)
За примеры буду весьма признателен! 

Ну уж про темплейты в WPF написано много. Вот, например, http://xamlcoder.com/cs/blogs/joe/archive/...f-controls.aspx


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
dazy
Дата 10.4.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Как можно шаблон который я применяю к объекту в xaml, применить в .cs?

<local:MyCloud Style="{StaticResource F4}"/>

Т.е. файл  themes/F4.xalm сделать шаблоном для MyCloud, из кода...


PM MAIL   Вверх
Partizan
Дата 10.4.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



dazy, получить ресурс с именем F4 с помощью FindResource или другими способами, кастануть его к типу Style, а затем назначить объекту MyCloud этот стиль.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
dazy
Дата 10.4.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Спасибо за наводку!
После целенаправленного поиска попалась на глаза зачетная статейка там этот вопрос подробнейшим образом расписали энтузиасты от клавиатуры.
(+1)

Это сообщение отредактировал(а) dazy - 10.4.2009, 15:00
PM MAIL   Вверх
dazy
Дата 15.4.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Что то ни как не разберусь.
Есть несколько контролов, полностью идентичные по своей структуре, различается только внешний вид (контур, кривая).
У этих контролов кроме внешности все одинаковое, в том числе и state'ы. Поскольку внешность разная, я выношу ее в шаблоны. Но получается что и state'ы, хотя они и одинаковые, нужно хранить в одном и том же файле с шаблоном. Вернее у меня не получается разделить state'ы и внешний вид. Хотелось бы чтобы все шаблоны наследовали, или как то подключали общие state'ы, которые для всех шаблонов должны быть одинаковые. Подскажите как этого добиться?


PM MAIL   Вверх
Idsa
Дата 15.4.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



dazy, что есть state'ы? Если я правильно понял, то для внешнего вида нужно использовать ControlTemplate, а для state'ов - DataTemplate.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
dazy
Дата 15.4.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Блин, все забываю, что тут WPF рулит  smile 

States, эта концепция состояний для контрола в сильверлайте.
Т.е. у контрола может быть несколько состояний, обычный, в фокусе, нажатый и т.д. Эти состояния описываются примерно как анимация, ну и запускаются переходы в какое либо состояние по событию. В СЛ нет  триггеров. Вооот. Как то так.
Я так думаю, что условно можно приравнять States к триггерам, хотя не уверен.

А если поступить наоборот, можно ли как-то подставить в шаблон саму кривую? У меня фигуры Path, различаются только данными в Date и смещением Canvas.Top/Left, но почему то биндить эти свойства не получается. Наверно я что то не так делаю. Может с этой стороны получится решить?



PM MAIL   Вверх
Idsa
Дата 15.4.2009, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Цитата(dazy @  16.4.2009,  01:09 Найти цитируемый пост)
Может с этой стороны получится решить?

Может smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
dazy
Дата 16.4.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Вопрос в том как это можно сделать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0801 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.