|
Плиткой отобразить элементы
|
|||
---|---|---|---|
#18+
Добрый день! Есть такая вот задача: Мне из БД приходит список элементов. Каждый элемент содержит свой номер и один булевый признак. Задача 1) Мне надо все эти элементы отобразить в гриде (или другом контроле) плиткой. Я стараюсь писать следуя идеологии MVVM. Я не пойму как мне сгенерировать набор textblock`ов и вывести их на грид используя mvvm подход. Может у кого-то есть примерчик подобной задачи? При этом если элементов много, то позволить скролить датагрид, чтобы можно было просмотреть все элементы. Задача 2) После некоторой магии, которую совершает пользователь, у меня меняется тот самый булевый признак и мне надо весь этот массив обновить в БД. По сути задача - "вкл/выкл элементы" в некотором массиве. При этом, мне кажется, что записывать признак в БД сразу при его изменении (у единичного элемента) как-то не очень хорошо. Хотелось бы по финалу прописать всё одним махом. Вопрос: Как правильно в MS SQL передать массив элементов (ну к примеру тех же int, он же просто id элемента)? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 16:28 |
|
Плиткой отобразить элементы
|
|||
---|---|---|---|
#18+
Алексей Ку., Вот.Может кому пригодится: <ItemsControl Grid.Row="1" ItemsSource="{Binding Tares}" Margin="5"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate DataType="tareReturnController:p_GetTaresForReturnResult"> <Border Width="100" Height="30" Background="IndianRed" Margin="10"> <Grid> <TextBlock Text="{Binding barcode}" FontSize="15"> <TextBlock.Style> <Style> <Style.Triggers> <DataTrigger Binding="{Binding IsReturned}" Value="0"> <Setter Property="TextBlock.Background" Value="Red"/> </DataTrigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> </Grid> </Border> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 13:32 |
|
Плиткой отобразить элементы
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 13:33 |
|
Плиткой отобразить элементы
|
|||
---|---|---|---|
#18+
Путь такой: а) Делается Панель на базе класса Panel или VirtualizingPanel (если нужна визуализация и если она вообще возможна). В этом классе основная задача переопределить 2 метода MeasureOverride и ArrangeOverride. 1 метод для расчета размеров самого себя и содержимого, 2 для размещения элементов в свойстве Children на себе (на панели). б) После этого создаешь класс наследованный от ItemsControl или используешь его (или других его наследников), определяешь для этого контрола Panel ту панель, что ты сделал в пункте а) в) можешь сделать обёртку аля ListBoxItem\TreeViewItem для отображения содержимого элементов списка. г) по визуализации могу только отдельным постом, так как там очень заморочено соответственно, в панеле будет определено как размещаются элементы, на твоё усмотрение, хоть шестигранниками укладывай, хоть по кругу или в 3D. Добавление удаление элементов будет лежать на плечах ItemsControl'а (а в купе с виртуализацией). Останется определить шаблон данных для элементов и создать модель представления под это дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 21:03 |
|
Плиткой отобразить элементы
|
|||
---|---|---|---|
#18+
Roman Mejtes, Мне кажется, или описанной мною "стандартный" метод выше - проще? Ваш метод, как мне кажется, применим, когда требуется уж полная кастомизация. Мне же нужен был простой и быстрый способ. Я его нашёл как мне кажется. В любом случае спасибо за ответ! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:13 |
|
Плиткой отобразить элементы
|
|||
---|---|---|---|
#18+
Алексей Ку.Roman Mejtes, Мне кажется, или описанной мною "стандартный" метод выше - проще? Ваш метод, как мне кажется, применим, когда требуется уж полная кастомизация. Мне же нужен был простой и быстрый способ. Я его нашёл как мне кажется. В любом случае спасибо за ответ! не кто же не спорит, Wrap панель имеет своё способ компоновки элементов, вам виднее, какой именно способ вам нужен, но если вам нужен такой способ который из коробочки не предоставляется, то приходится пилить самостоятельно :( а если нужна виртуализация (а у WrapPanel виртуализация отсутствует в 4.0 на сколько я знаю, на счет 4.5 не знаю) то только ручками :) есть еще вариант UniformGrid, если вам нужно, чтоб количество столбцов и строк было неизменным, так как WrapPanel такой возможности не предоставляет. в UniformGrid можно не определять Grid.Row и Grid.Column, если эти свойства не заданы, то элементы будут ложиться слева направо, сверху вниз. Если элементов будет больше, чем произведение столбцов и строк, то они будут размещаться за пределами UniformGrid'а, при этом прокрутки не будет, так как размер самого грида будет неизменным, а интерфейса IScrollViewer он не поддерживает. Хотя думаю, можно унаследовать и подкрутить гайки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:24 |
|
|
start [/forum/topic.php?fid=21&fpage=16&tid=1440865]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 291ms |
total: | 442ms |
0 / 0 |