WrapPanel как ItemPanel для ItemsControl

Все еще дурачиться с WPF и учиться, когда я иду. Теперь попытаемся создать динамическую группировку элементов управления (в основном кнопки, но могут включать CheckBox и другие).

Я понятия не имел, как лучше всего это сделать, поэтому я попытался создать стиль ItemsControl, а затем добавить элементы в ItemsPresenter внутри WrapPanel. Вскоре поняли, что элементы не будут обертываться, потому что они фактически не были внутри WrapPanel, если я не поставил его как ItemsHost. Как это:

                    

Обратите внимание, что это незавершенное производство, и есть много эффектов моделирования, которые мне еще нужно реализовать. Здесь я использую его:

     TickBox             

Также обратите внимание на то, что все еще продолжается работа, так как UniformGrid не может быть здесь, а также поля могут быть больными (есть ли какие-либо поля, которые перекрываются?), Поэтому вклад будет оценен.

Теперь к реальной проблеме. Это не работает, я получаю сообщение об ошибке:

Объект ItemsPresenter не может быть добавлен в ‘WrapPanel’. Невозможно явно изменить группу «Дети» панели, используемой как ItemsPanel для ItemsControl. ItemsControl генерирует дочерние элементы для Panel. Ошибка в объекте «System.Windows.Controls.ItemsPresenter».

Так что лучший способ сделать что-то вроде этого (хотелось бы, чтобы иметь возможность просто бросать кнопки и другие элементы управления в ItemControl, и линия действительно хороша). Было бы лучше поставить Controls в какую-то коллекцию и повторить ее.

Хотелось бы получить это красиво, но мои навыки WPF все еще не хватает. Есть ли какие-либо книги WPF, которые преподают за пределами основ и показывают, как профессионалы действительно это сделают?

Вы можете взглянуть на свойство ItemsPanel :

Получает или задает шаблон, который определяет панель, которая управляет компоновкой элементов.

Пример:

        

И вы можете установить его в стиле следующим образом:

  

Не забывайте определение свойства clue IsItemsHost = «True». В противном случае ваш элемент ItemsControl не будет показывать ваши элементы.

        

Вот еще одна простая альтернатива медленному решению DataGrid / xceed datagrid и WrapPanel. Может быть полезно, когда много данных или целая таблица только для редактирования. Использование ItemsControl + Grid.IsSharedSizeScope = “True”

Дополнительная информация здесь: https://wpf.2000things.com/tag/issharedsizescope/ + На объектной виртуализации для производительности: виртуализация элемента управления ItemsControl?

                                     
  • Как сделать снимок экрана с помощью элемента управления WPF?
  • WPF перед записью
  • Как сортировать элементы TreeView с помощью SortDescriptions в Xaml?
  • Установите фокус на текстовое поле в WPF из модели просмотра (C #)
  • Каков порядок инициализации статической переменной в C #?
  • Как отобразить другое значение для выпадающего списка значений / выбранного элемента в WPF ComboBox?
  • Изменяет ли атрибут привязки WPF маркер к streamу пользовательского интерфейса?
  • Поместите элемент управления WPF в форму Windows Forms
  • Почему разработчику WPF не удается загрузить библиотеки, вызывающие неуправляемые библиотеки DLL?
  • Как связать перечисление с элементом управления combobox в WPF?
  • Почему я не могу создать стиль DataGridTextColumn?
  • Давайте будем гением компьютера.