Хобрук: Ваш путь к мастерству в программировании

Изменение ItemsPresenter в пользовательском стиле ComboBox для отображения элементов рядом друг с другом

Я хочу, чтобы ComboBox содержал изображения как элементы (они будут добавлены программно). В ComboBox по умолчанию они отображаются вертикально. Я хотел бы, чтобы они отображались, как в VariableSizedWrapGrid, но я не совсем уверен, как это сделать. У меня есть этот ItemsPresenter для стиля ComboBox, но изменение его на что-либо другое приводит к тому, что ничего не отображается.

Или, может быть, я должен сделать это по-другому (используя ListView?). Я хочу, чтобы выбранный элемент отображался как в ComboBox, и после щелчка все элементы отображались сразу (около 25).

Как это выглядит сейчас:

введите здесь описание изображения

Что я хочу:

введите здесь описание изображения


Ответы:


1

Измените свойство ItemsPanel:

<ComboBox>
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel/>
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>

Если вы хотите использовать что-то вроде VariableSizedWrapGrid, вы можете создать свою собственную реализацию или проверить работу других людей, например: VariableSizedWrapGrid для WPF.

22.11.2015
  • К сожалению, это не работает (да, я изменил ориентацию на горизонтальную). Интересно, вызвано ли это тем, что ComboBox использует UserControl и внутри него ItemsPresenter. 22.11.2015

  • 2

    Я провел некоторое исследование, и кажется, что невозможно достичь того, чего я хочу. Я просто сделаю это другим способом, чтобы получить то, что я хочу (Button с Flyout и ListView внутри, должно работать).

    24.11.2015
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..