![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
При регистрации Dependency Property передается аргумент ownerType.
В случае регистрации Attached Property смысл этого свойства очевиден: какие классы могут аттачить это свойство. В случае регистрации "обычного" Dependency Property смысл этого свойства мне не ясен: какой может быть ownerType кроме this? |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 2 Всего: 49 |
Idsa, вот типичное DependencyProperty:
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
||||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 2 Всего: 49 |
Это статическое свойство. Инициализация - часть статического конструктора. this - ссылки на экземпляр - в нем нет. Конструкции "класс в котором находится данный кусок кода" в C# тоже нет. Вводить ее собираются, да и смысла заменять явное упоминание типа на какой-то thistype особо нет. |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Я понимаю, что для статического методе this не определен. Вопрос заключается в том, какого предназначение ownerType при регистрации DependencyProperty. |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 5 Всего: 42 |
Idsa, видимо это просто сделано чтоб не мучаться с определением принадлежности через рефлекшен.
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Но зачем вообще DependencyProperty знать, в объекте какого типа оно находится.
Более того, я могу указать любой класс в качестве owner:
, но exception не вылетает. |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 2 Всего: 49 |
Idsa, А почему он должен вылетать? Все вполне корректно, ты просто уведомляешь систему DP о том, что у класса MyClass есть свойство Name. Какая разница, где ты это делаешь - в статическом конструкторе, или в конструкторе Window1.
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Хм... Если это понимать таким образом, то опять возникает несколько спорных моментов.
1. Что за нужда регистрировать свойства одного класса из другого? 2. Почему не вылетает ехception аля "Тип MyClass не наследуется от DependencyObject"? |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Судя по всему, ownerType нужен для того, чтобы использовать то же dependency property в других классах. Вот пример с MSDN: http://msdn.microsoft.com/en-us/library/ms754002.aspx.
|
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 2 Всего: 49 |
Да, только это не отвечает на вопрос #2.
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Вот обсуждение этого же вопроса на форуме MSDN: http://forums.msdn.microsoft.com/en-US/wpf...94-7527a2210198
К сожалению, на последний мой пост там так и не ответили... но не суть. Как я выяснил, Exception кидается только в том случае, когда dependency property регистрируется с указанием метаданных. Чем вызвана такое поведение - без понятия. В целом же, ownerType разрешено прописывать ручками, т. к. это позволяет указать любой базовый тип для множества объектов. Тогда поведение dependency property становится очень похожим на attached dependency property (за исключением того, что такие attached properties не получится использовать в xaml). Это сообщение отредактировал(а) Idsa - 15.7.2008, 12:12 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |