|
WPF: Триггер по отношению к другому элементу.
|
|||
---|---|---|---|
#18+
Хочу менять свойство одного элемента в зависимости от свойства другого и как-то не понял, как это правильно сделать. В итоге после битья головой об компилятор, учебник и гугл смог сделать так: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Этот прием, в принципе, решает мой вопрос, но что смущает: Сеттер работает только по отношению к "своему" элементу. TargetName не разрешается применять не в контексте шаблона (а шаблон в моем случае не нужен), можно как-то указать установку свойства "чужого" элемента (например, если я хочу в моем примере разместить триггер в верхнем ToggleButton-е или вообще, в ресурсе окна)? Использован DataTrigger, действительно обычный триггер применить не удастся? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2015, 17:47 |
|
WPF: Триггер по отношению к другому элементу.
|
|||
---|---|---|---|
#18+
Shocker.Pro, я давно уже забил делать какую то логику в ContentControl'ах, это контрпродуктивно, и только добавляет проблем Использую либо DateTemplate с ContentPresenter'ом, либо ControlTemplate где нужно вот пример: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
в книге сказано (на сколько я помню), что Trigger'ы в ContentControl'е не были сделаны, но планировалось их добавить в будущем. Но мы давно уже в этом будущем, а WPF развивается как улитка. Сделать так, как вы хотите, у вас не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2015, 21:33 |
|
WPF: Триггер по отношению к другому элементу.
|
|||
---|---|---|---|
#18+
Roman Mejtes, Если упростить твой пример, то, фактически получается следующее: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
то есть ты просто на ходу оборачиваешь всю конструкцию в контрол, чтобы обойти ограничение на использование SourceName и TargetName. То есть по идее, можно так обернуть все окно (содержимое) и юзать такие триггеры? А для чего тогда ты дополнительно выносишь стиль и делаешь новый шаблон для ToggleButton? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2015, 22:23 |
|
WPF: Триггер по отношению к другому элементу.
|
|||
---|---|---|---|
#18+
Shocker.ProRoman Mejtes, Если упростить твой пример, то, фактически получается следующее: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
то есть ты просто на ходу оборачиваешь всю конструкцию в контрол, чтобы обойти ограничение на использование SourceName и TargetName. То есть по идее, можно так обернуть все окно (содержимое) и юзать такие триггеры? А для чего тогда ты дополнительно выносишь стиль и делаешь новый шаблон для ToggleButton? У меня Windows 8,1 и ToggleButton имеет стиль, при наведении красный фон заменялся голубым, который перекрывал задний фон, по этому я на скорую руку заменил шаблон на шаблон "попроще" :) ControlTemplate я использую, если мне нужно определить внеший вид конкретного Control'а или описать шаблон своих CustomControl'ов. А DataTemplate я использую для "связывания" ViewModel и View. + в DataTemplate я могу определить тип контекста, + сам по себе шаблон данные независимый элемент, который я могу легко перенести в любую другую точку программы и он так же поддерживает триггеры всех типов. А для размещения шаблона данных просто кидаю ContentPresenter, задаю Content и ContentTemplate. Как по мне, работать так в WPF намного удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2015, 12:40 |
|
|
start [/forum/topic.php?fid=21&msg=39021061&tid=1440824]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
125ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 230ms |
0 / 0 |