|
XAML инициализация свойств объекта
|
|||
---|---|---|---|
#18+
Когда объект загружается, на сколько я помню 1-ым свойством которое инициализируется является DataContext, потом инициализация свойств идет в порядке очереди расположения. Теперь небольшой UseCase. Есть некий класс наследованный от Control аля MyControl : Control. в этом классе (контоле) есть 2 DP, Property1 и Property2, когда инициализируется Property2, оно берет Property1 выполняет какую нибудь хрень и меняет состояние объекта. Но программист в XAML напишет Property2="BlaBlaBla" Property="Blablalba", то в момент инициализации свойства Property2, свойство Property1 равно Null. Возникает вопрос, как то этого можно избежать? Понятно дело, что этот метод смены состояния я могу разместить в PropertyChanged методе обоих свойств и если все условия (оба поля инициазированны) выполнить этот метод или выполнить его по события Loaded, так как оно вызывается после того инициализация и связывание завершены. Но может существует какой то способ, или атрибутами это как то можно задать. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 17:54 |
|
XAML инициализация свойств объекта
|
|||
---|---|---|---|
#18+
Да нормальный у тебя подход через Loaded. Ведь результат от этого не поменяется? Как вариант, вспомни, есть ли такое поведение у каких-нибудь встроенных контролов, и посмотри их исходный код - как у них это сделано. Нашёл только что-то подобное http://stackoverflow.com/a/9744947 http://stackoverflow.com/a/25150498 Т. е. то порядок зависит от порядка регистрации, то от порядка установки свойств в замле. Похоже, автор и сам не знает. Выход - проверять самому. Т. е. сделать порядок в замле один, а порядок регистрации - другой. И какой из них сработает. Но я бы на порядки эти не надеялся слишком - их могут и изменить в будущем парсере. Или в парсере WPF это может быть одно правило, а в парсере ModernUI - другое. И ты при переносе юзер контрола из WPF в MUI можешь об этом забыть. Полагаться на Loaded или что-то в этом роде - всё же надёжнее, я думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2015, 08:47 |
|
XAML инициализация свойств объекта
|
|||
---|---|---|---|
#18+
Т. е. надо полагаться не на какие-то завихрения в умах тех, кто писал парсеры замла, а на более общую логику. Например, на правило "вся работа со свойствами только после их инициализации". Т. е. такой зависимости установки свойств, как у тебя, не должно быть до инициализации. Поэтому сначала парсер инициализирует их, а потом ты вводи зависимости между ними как хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2015, 08:50 |
|
|
start [/forum/topic.php?fid=21&gotonew=1&tid=1440868]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get first new msg: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 155ms |
0 / 0 |