![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Rohoss |
|
||||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Есть свойство зависимостей, которое определено непосредственно в нашем UserControl, в XAML оно не доступно. Однако есть способы манипулировать данным, например
Однако как привязать данное свойство к модели представления, непосредственно в ХAML? Это вообще возможно? Если бы свойство зависимостей было в родительском классе определено, можно было бы так
|
||||
|
|||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Совсем не понял чего надо сделать - код определения св-ва в студию. Вместе с примером желаемого использования.
|
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Да просто всё. Добавляем в проект ЮзерКонтрол и в код-бихайне определяем свойство зависимости. Дальше в ХАМЛ данного ЮзерКонтрола пытаемся достучаться до этого свойства. Достучаться у нас получится, а вот привязать его нет. Добавлено через 1 минуту и 50 секунд ну раз нужен код сейчас напишу |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
вот проект
Добавлено через 7 минут и 47 секунд Здесь надо в ХАМЛе файла UserControl1.xaml привязать свойство IsActive к свойству класса UserControl1ViewModel, IsActiveState Это сообщение отредактировал(а) Rohoss - 3.5.2011, 16:19 Присоединённый файл ( Кол-во скачиваний: 3 )
WpfApp.rar 39,81 Kb |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Одна поправка (видимо ты случайно ошибся)
Вообще подход неверный тут на мой взгляд. Создавать депенденси проперти в представлении только для того чтоб в XAML привязать его к модели, которая и так всегда одна и та же для нее. Ты можешь так же легко воспользоваться код-бехиндом, чтобы ловить изменения свойства в модели, или, как ты сказал, задиндить его в кодбехинде. Депенденси было бы полезно, если бы привязка осуществлялась снаружи контрола, а для внутренних целей нет смысла мне кажется. Ну если очень хочется, сделай биндинг в кодбехинде, пара строк. Или еще можешь сделать атачед проперти в UserControl1 (принимая в аргументе только тип UserControl1) и воспользоваться им. Тогда сможешь биндить в XAML (но такой подход вообще не к месту на мой взгляд). PS (если позволите): Вообще мы на проектах уже давно не используем такой подход (исключая самый первый проект на MVVM). Слишком много гем*роя вылазит. У нас модели не создаются в представлении. Вся иерархия строится на базе моделей представления. Например, есть какие-то главные модели (воркспейсы), в них есть свойства представляющие другие модели, в тех могут быть еще (в принципе ниже трех уровней вроде еще не спускалось). UI строится на иерархии DataContext. На воркспейсные модели определены DataTemplate, так что WPF сам заботится тут о поиске представления (а для силвера 4 мы небольшой прибамбас сделали для этого) так что мы просто показываем экземпляр модели (напимер в диалоговом окне). Модели между собой связываем разными способами (и прямыми и косвенными). В целом, получается не плохо, за исключением очень запутанных и сложных представлений, но таковых меньшинство. Хотя, если бы последние мы связывали через представления, то было бы еще хуже -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Rohoss |
|
||||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Совершено верно, я побыстрому набросал и заметил когда уже залил проект, там надо
Добавлено через 11 минут и 44 секунды
Ну снаружи я его тоже хотел использовать В общем идея была такая, сделать юзерконтрол, который находится в окне и отображает данные по привязанному свойству. Собственно всё тут должно было работать и не составлять никаких неудобств, если бы я к этому представлению не решил добавить модель представления. Хотя, если честно она там трижды не надо, так как никакой логики представления не содержит... Так что собственно уберу её и решу все проблемы. Ну а по сабжу, похоже физической возможности привязать в ХАМЛе нет? Это уже чисто теоретический интерес... Добавлено через 14 минут и 43 секунды Ну этот подход кажется правильным |
||||
|
|||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Однако свойство зависимости всё равно использовать не получается, потому что
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |