|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Возникла задача по контролю размеров UserControl из него самого. Вроде, где-то попадалось, что контрол получает сообщение (событие?) о доступном для него месте и потом может обработать эту информацию скорректировав свои размеры. Сейчас понадобилось - не могу найти! Или мне это приснилось...? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 11:24 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Measure вызывается тем, кто хочет его разместить (контейнер) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 12:00 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Shocker.ProMeasure вызывается тем, кто хочет его разместить (контейнер) Похоже я не туда копаю или, вообще, чушью занимаюсь. Опишу на примере, что хочу сделать. Оцените насколько это реально. Допустим, есть UserControl у которого есть свойство устанавливающее пропорции высоты и ширины - в действительности эти пропорции получаются от заполнения внутренних элементов. При использовании надо чтобы эти пропорции сохранялись. То есть, в зависимости от предоставленного места, он растягивается на всю ширину или длину с теми же пропорциями. В примере эту функцию выполняет метод resize . Его выполнение вызывается в событии SizeChanged. Но это не рабочий вариант - я сделал так для иллюстрации задачи. Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 15:53 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Eld HaspДопустим, есть UserControl у которого есть свойство устанавливающее пропорции высоты и ширины - в действительности эти пропорции получаются от заполнения внутренних элементов.Может тебе не юзерконтрол нужен, а своя панель? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 16:35 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Shocker.ProEld HaspДопустим, есть UserControl у которого есть свойство устанавливающее пропорции высоты и ширины - в действительности эти пропорции получаются от заполнения внутренних элементов.Может тебе не юзерконтрол нужен, а своя панель? Нет, там по задаче, именно, адаптивный UserControl нужен. Я несколько решений перепробовал ViewBox, Размерные группы (SharedSizeGroup), конвертеры - всё не то. Надо, чтобы вся логика была спрятана внутри UserControl. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 18:02 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Ну при желании можно и панель внутри контрола спрятать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 18:16 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Shocker.ProНу при желании можно и панель внутри контрола спрятать ) Такой вариант тоже пробовал Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Но при использовании - ж...па! Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Скриншот приложил. Там видно рамку вокруг - она совсем там где нужно. То есть да, вложенную панель удаётся правильно масштабировать. Но UserControl имеет совсем другой размер. Как его сжать до вложенной панели? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 18:30 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Что-то накосячил с прошлым сообщением - не так отформатировал и не приложил CB UC. Код: c# 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. 40.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 18:33 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Eld HaspЕго выполнение вызывается в событии SizeChangedпогоди-ка. Тебе нужно колдовать с MeasureOverride по идее ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 18:40 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Shocker.ProEld HaspЕго выполнение вызывается в событии SizeChangedпогоди-ка. Тебе нужно колдовать с MeasureOverride по идееИ это пробовал! Там тоже только размеры самого контрола, а не его контейнера или допустимого размера. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 19:50 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Eld HaspТам тоже только размеры самого контрола, а не его контейнера или допустимого размера.а причем тут контейнер, ты же сам сказалEld Haspзадача по контролю размеров UserControl из него самого.я перестаю понимать твою задачу ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 19:55 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Shocker.ProEld HaspТам тоже только размеры самого контрола, а не его контейнера или допустимого размера.а причем тут контейнер, ты же сам сказалEld Haspзадача по контролю размеров UserControl из него самого.я перестаю понимать твою задачу Для того чтобы изменить свои размеры контрол же должен получить информацию о выделенном уме пространстве. Допустим, ему выделена ячейка Grid размерами 400х400, он получает этот размер и устанавливает собственный 400х250. Каким образом "общаются" контейнер и вложенные элементы о размерах? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 20:10 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Может я не правильно использую MeasureOverride ? Код: c# 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2019, 20:15 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Eld HaspКаким образом "общаются" контейнер и вложенные элементы о размерах?Вот как это выглядит со стороны панели https://www.sql.ru/forum/1308915/wpf-shpargalka-dlya-sozdaniya-paneli тут подробнее http://professorweb.ru/my/WPF/Template/level18/18_11.php Понимая, как работает компоновка со стороны контейнера, ты поймешь, что ему должен вернуть элемент Eld HaspМожет я не правильно использую MeasureOverride ?В примере ты пытаешься воздействовать и на размеры панели и на размеры контрола. Оставь только MeasureOverride ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2019, 00:25 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Shocker.ProEld HaspКаким образом "общаются" контейнер и вложенные элементы о размерах?Вот как это выглядит со стороны панели https://www.sql.ru/forum/1308915/wpf-shpargalka-dlya-sozdaniya-paneli тут подробнее http://professorweb.ru/my/WPF/Template/level18/18_11.php Понимая, как работает компоновка со стороны контейнера, ты поймешь, что ему должен вернуть элемент professorweb читал и пытался делать по нему - не вышло. Вашу тему прочитаю - постараюсь понять. Shocker.ProEld HaspМожет я не правильно использую MeasureOverride ?В примере ты пытаешься воздействовать и на размеры панели и на размеры контрола. Оставь только MeasureOverride Нет. Там только MeasureOverride используется. Вызов метода resize не происходит - подключение обработчика SizeChanged в конструкторе UserControl закомментировано. Вот код с удалением нерабочих участков. Я с него начинал свои попытки. Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2019, 13:47 |
|
Программное изменение размеров UserControl
|
|||
---|---|---|---|
#18+
Блин! Ну, я тупой....! ((( Всё работает. Я затупил с использованием! Сам UserControl и внешний Border (который рамку делает вокруг UserControl) надо же сжимать до его размеров, а не растягивать до размеров контейнера! Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Зла на себя не хватает! Два дня провозился из-за своей глупости! Shocker.Pro, ОГРОМНОЕ СПАСИБО за Ваше внимание. И не обессудьте за мою тупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2019, 13:59 |
|
|
start [/forum/topic.php?fid=21&msg=39809259&tid=1440331]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 420ms |
0 / 0 |