|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Использовал в ItemsPanel панели WrapPanel, StackPanel. Всё было гладко ни каких проблем. Попытался с Canvas также сделать - полный тупик. Как можно Canvas использовать? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 11:11 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Eld Hasp, В канвасе без координат объекты имеют координаты 0,0,0,0, надо определить координаты и размеры объектов через measure arrange ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 12:24 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Roman Mejtes, я же задаю Canvas.Left... Рассчитываю, для этого примера, что каждый элемент будет сдвигаться на указанную позицию... А размеры Border, как я думал, должен принять в соответствии с содержимым. Или по иному, это всё делать надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 13:46 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Eld HaspИли по иному, это всё делать надо?Немножко по иному Код: xml 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 14:52 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Ну точнее полностью можно так Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
и твой пример заработает. Но я бы не стал менять Template для ListBox.ItemContainerStyle - зачем? Просто надо сделать шаблон для local:SmallExampClass ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 14:54 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProНо я бы не стал менять Template для ListBox.ItemContainerStyle - зачем? Просто надо сделать шаблон для local:SmallExampClassвот так Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 14:56 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
На будущее - давай код, который можно сразу запускать (в данном случае пришлось воссоздавать класс local:SmallExampClass, не долго, но всё же) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 14:57 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.Pro, СПАСИБО! Вот я тупанул! И главное, стоко времени потратил, но сам так и не смог сообразить, что просто не то позиционирую! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 14:59 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProНа будущее - давай код, который можно сразу запускать (в данном случае пришлось воссоздавать класс local:SmallExampClass, не долго, но всё же)Да, учту - моя оплошность. Ещё раз, СПАСИБО! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 15:00 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProShocker.ProНо я бы не стал менять Template для ListBox.ItemContainerStyle - зачем? Просто надо сделать шаблон для local:SmallExampClassвот так Пробовал, но самому сообразить это не получилось. Код: xml 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 22:04 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Эээээ..... это вопрос? или о чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 22:34 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProЭээээ..... это вопрос? или о чём?Нет. Не вопрос. Объяснил, до чего без Вашей помощи не смог додуматься. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 08:14 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProЭээээ..... это вопрос? или о чём?появился вопрос! Как я понял, Border располагается не в панели, а в ControlTemplate. Поэтому указание на позицию Border в панели игнорируется. Зачем тогда в шаблоне данных указывать Canvas.Left="{Binding PropInt}" ? И второй вопрос, для отображения списка элементов в Canvas, использование ListBox - нормальный подход? Или есть лучшие варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 09:05 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Может лучше напрямую как-то Canvas использовать? Но в панелях нет шаблонов....,вроде бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 09:24 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Eld HaspЗачем тогда в шаблоне данных указывать Canvas.Left="{Binding PropInt}" ?Забыл выпилить Eld HaspИ второй вопрос, для отображения списка элементов в Canvas, использование ListBox - нормальный подход?Ну именно ListBox смысла нет, используй ItemsControl Eld HaspМожет лучше напрямую как-то Canvas использовать? Но в панелях нет шаблонов....,вроде бы.В ItemsControl ты даешь список объектов, необязательно визуальных, поэтому и применяется шаблон. И тут ты спокойно можешь использовать IEnumerable в качестве источника. А в панель ты складываешь визуальные элементы напрямую. Рассматривай ItemsControl как оболочку для произвольной панели, которая поддерживает IEnumerable обычных объектов. Когда такой функционал не требуется, тогда используешь панель напрямую без оболочки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:10 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProНу именно ListBox смысла нет, используй ItemsControlА, ну если нужно выделение элементов, тогда ListBox - да ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:17 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProShocker.ProНу именно ListBox смысла нет, используй ItemsControlА, ну если нужно выделение элементов, тогда ListBox - даДа, выделение нужно. А как быть если несколько типов элементов? Как DataTemplate настроить на вывод разных фигур? Или надо UC делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 22:26 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Так же, как и в моем примере. Код: xml 1. 2.
добавить в ресурсы листбокса все шаблоны элементов, которые используются в списке. А если эти элементы используются в разных местах, можно добавить шаблоны в ресурсы окна или вообще приложения (app.xaml) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 22:52 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProТак же, как и в моем примере. Код: xml 1. 2.
добавить в ресурсы листбокса все шаблоны элементов, которые используются в списке. А если эти элементы используются в разных местах, можно добавить шаблоны в ресурсы окна или вообще приложения (app.xaml) Не всё понял. Допустим как сделать всё в ресурсах ListBox понятно: ViewModel Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Словарь MyDictionary.xaml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Но вот с концовкой Вашего сообщения.... Не понял. Как можно в ListBox использовать несколько DataTemplate из словаря? В примере это RectangleTemplate и CircleTemplate. DataTemplate, вроде же, не наследуются? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 20:35 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Про наследование не очень понял, что имеется ввиду. В данном случае надо: а) убрать ресурсы из ListBox б) в MyDictionary.xaml у ресурсов удалить ключи (x:Key="RectangleTemplate" и x:Key="CircleTemplate") ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 20:53 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProПро наследование не очень понял, что имеется ввиду. В данном случае надо: а) убрать ресурсы из ListBox б) в MyDictionary.xaml у ресурсов удалить ключи (x:Key="RectangleTemplate" и x:Key="CircleTemplate")Как по умолчанию использовать я понял. Но есть ли, возможность выбирать по ключам как для стилей? Допустим, для одного типа есть несколько представлений. Как можно указать какое-именно из них использовать? Для стилей, в таком случае, можно указать в ресурсах стиль по умолчанию наследуемый от стиля с ключом. А как быть с DataTemplete? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 21:31 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
А, я, наконец, понял вопрос. Ну тут два варианта, на мой взгляд. Можно написать свой TemplateSelector, а можно, в принципе и DataTemplate наследовать, что-то типа Код: xml 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 22:31 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Но в принципе, я еще ни разу не столкнулся с ситуацией, когда для одного класса существуют принципиально разные шаблоны (хотя и не утверждаю, что такого не может быть в какой-то ситуации). А с другой стороны опять же ничто не мешает делать наследование классов на стороне модели, то есть даже класс-пустышку в общем случае, для которого существует отдельный шаблон. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 22:34 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.Proто есть даже класс-пустышку в общем случае, для которого существует отдельный шаблон.... скажем, базовый абстрактный класс с основным функционалом и несколько пустых наследников по числу необходимых шаблонов ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 22:36 |
|
Использование в ListBox.ItemsPanel панели Canvas
|
|||
---|---|---|---|
#18+
Shocker.ProНо в принципе, я еще ни разу не столкнулся с ситуацией, когда для одного класса существуют принципиально разные шаблоны (хотя и не утверждаю, что такого не может быть в какой-то ситуации). А с другой стороны опять же ничто не мешает делать наследование классов на стороне модели, то есть даже класс-пустышку в общем случае, для которого существует отдельный шаблон.Такой пример - откуда у меня возник вопрос. В ListView для класса одно представление удобное для списка. Выбранный элемент отображается в другом - более полном и удобном для редактирования. Вариант с "пустышкой" понятен. То же выход. Ещё вариант, до которого сам додумался, сделать один класс для всего со всеми свойствами наследников. И в нём ввести свойство переключающее представление. По этому свойству менять Visibility у элементов в шаблоне. Но это порождает множество элементов, пусть и невидимых. Не слишком ли криво это? Если вернуться к началу темы. Для DataTemplate не существует каких-то триггеров, селекторов (или чего-то подобного) позволяющего изменить представление или переключаться между ними? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 00:00 |
|
|
start [/forum/topic.php?fid=21&msg=39758756&tid=1440356]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 240ms |
total: | 544ms |
0 / 0 |