![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Если я делаю контрол и наследую его от UsesrControl, то по умолчанию он имеет множество различных свойств.
Как ими пользоваться? Например как правильно воспользоваться свойством Foreground, чтобы не создавать свой аналог этого свойства? |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Ничего особенного в их использовании, на мой взгляд, нет. Возьмем вышеуказанное свойство Foreground. Идем в MSDN. Видим, что это Dependency property со следующими флагами: AffectsRender, SubPropertiesDoNotAffectRender, Inherits. Значит при выставлении Foreground у UserControl, Foreground дочерних контролов также поменяется (если не прописан явно).
|
|||
|
||||
dazy |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
А можно на примере?
Сделал кнопку как UserControl
В самом коде ни чего не пишу. На страничке пользуюсь этим контролом, выставляю свойства. Но эффекта нет. Кнопка все равно дефолтная.
Что у меня не так? Добавлено через 4 минуты и 59 секунд Еще вопрос. А если я в контрол вставляю объект у которого нет такого свойства как у UserControl. Например эллипс. У него есть свойство Fill. Как проще всего сделать, чтобы изменяя свойство Foreground у UserControl, у эллипса менялось Fill? |
||||
|
|||||
rooks |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.9.2008 Где: Минск Репутация: 5 Всего: 9 |
Вы же выставляете свойства UserControl-у а не кнопке. Чтобы менять свойства кнопки можно биндить их на свойства UserControl-а.
|
|||
|
||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Да, это я понимаю. У меня вопрос как это сделать! |
|||
|
||||
rooks |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.9.2008 Где: Минск Репутация: 5 Всего: 9 |
в данном примере можно вот так
или так
Это сообщение отредактировал(а) rooks - 3.4.2009, 16:04 |
||||
|
|||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Это наверное для сильверлайта 3 да? У меня на ElementName ругается, говорит не могу узнать слово ))))
|
|||
|
||||
rooks |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.9.2008 Где: Минск Репутация: 5 Всего: 9 |
это для WPF, как для сильверлайта не знаю...
|
|||
|
||||
dazy |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Еще раз подниму вопрос надеясь на мировой опыт:
Я могу только переопределить, т.е. по факту написать свое свойство для юзерконтрола:
Все что я делаю выше, это передаю в Fill новую кисть. Но это не очень здорово использовать кодбихайнд для привязки, да. 1. Можно ли сделать тоже самое, т.е. использовать стандартное свойство Foreground, чтобы менять цвет у вложенных объектов, без переопределения Foreground? Т.е. можно ли как то подключиться к event'у который срабатывает при изменении свойства? 2. Как можно тоже самое сделать чрез замл? Есть простенький контрол:
Чтобы потом можно было пользоваться этим Юзерконтролом на страничке таким образом:
Любые идеи приветствуются! Все это про силверлайт ![]() Это сообщение отредактировал(а) dazy - 7.4.2009, 14:54 |
||||||
|
|||||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Попробуйте вот так, вроде для Silverlight тоже должно работать (для десктоп приложений работает):
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
К сожалению SL2 не поддерживает RelativeSource
![]() |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
а ControlTemplate и TemplateBinding поддерживает?
если да, то дам пример. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Вроде да, поддерживает.
ElementName - нет. |
|||
|
||||
-Mikle- |
|
||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Тогда советую либо вообще отказаться от UserControl и сделать так:
либо сделать вот так:
Но что-то мне подсказывает, что в сильверлайте есть таки некий готовый Binding либо его подходящие свойства... уж слишком тривиальная задача, и делать так как я предложил, это мне кажется как через ж**у... ![]() -------------------- Если тебе плюют в спину, значит ты впереди... |
||||
|
|||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
WPF решения не работают.
Во-первых, в СЛ binding действительно кастрированный до предела. Может с выходом 3й версии ситуация изменится. Во-вторых, похоже, что UserControl, это какое-то половинчатое решение. И чтобы делать более-менее приличный контрол, надо наследоваться от Control. Как я понял, при работе с UC, единственный возможный путь биндить свойство на отображение контрола это внутри кода DP. Чтобы биндить свойство внутри замл, нужно наследоваться от Control, и создавать шаблон, там можно и биндить. Так что придется переходить в на использование Control, или забить на замл, и все делать из кода. Или кто-то все же подскажет решение. Но я уже сомневаюсь, что оно вообще существует. По крайней мере во 2й версии СЛ. ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |