powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Множественный выбор ComboBox (multiselect)
7 сообщений из 7, страница 1 из 1
Множественный выбор ComboBox (multiselect)
    #37227874
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сильверлайте нет комбобокса с множественным выбором элементов.
Зато в интернете есть примеры как это можно сделать.
Самый простой путь это через переопределение дефолтного ControlTemplate.
Нашел этот пример, он работает через переопределение стандартного шаблона. Но работает только под sl3, а после перенаправления под sl4 перестает.
Дело, видимо, в стандартном шаблоне для комбобокса под sl3, который использует
Код: plaintext
1.
2.
3.
4.
                                                <StackPanel
                                                    IsItemsHost="True"
                                                    Height="25"
                                                    Orientation="Horizontal"
                                                    Margin="4,0,0,0" />
А sl4 выставить свойство IsItemsHost для Panel отказывается, выдает ошибку 2542.
Я поправил тот пример под дефолтный шаблон sl4 и у меня все заработало.



SL 4.0, VS 2010.
...
Рейтинг: 0 / 0
Множественный выбор ComboBox (multiselect)
    #37228378
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,

А привязку к чекбоксам как делать? Достаточно было переопределить ItemTemplate.
...
Рейтинг: 0 / 0
Множественный выбор ComboBox (multiselect)
    #37232901
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюки,

Насчет привязки к чекбоксам не совсем понял.
Если имелось в виду то, что сейчас идет привязка итемссурс и в ней ищутся свойства IsSelected и Name. Т.е. неявно.
То да, но иначе никак, т.к. свойства должны привязываться попарно для каждого объекта. А привязка отдельно к чекбоксам не имеет смысла.

Насчет itemtemplate.
Переместил в ItemTemplate, но получилось что-то не то. Появились рамки итемов листбокса вокруг чекбоксов.
...
Рейтинг: 0 / 0
Множественный выбор ComboBox (multiselect)
    #37233538
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,

Что за рамки? Покажите скрин.

Грамотный подход - это переопределять ItemTemplate и туда помещать чекбокс. Можно еще при этом допилить Template, если появляются какие-то изъяны.
...
Рейтинг: 0 / 0
Множественный выбор ComboBox (multiselect)
    #37233949
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюки,

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

Насчет рамочек.
Скрин:


Использование:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        <ComboBox ItemsSource="{Binding}"
                  x:Name="combo1"
                  HorizontalAlignment="Left"
                  Margin="12,12,0,0"
                  VerticalAlignment="Top"
                  Width="200">
            <!--Style="{StaticResource ComboBoxStyle1}"-->
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox ClickMode="Press"
                                Content="{Binding Path=Name}"
                                IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

Тестовый проект прилагаю.

PS. Не особо хорошо чувствую разницу между дата/контрол темплейтами.

Спасибо.
...
Рейтинг: 0 / 0
Множественный выбор ComboBox (multiselect)
    #37234100
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,

Обычно свойство Template (тип ControlTemplate) это морда (шаблон) всего контролса. Переопределяя его, вы перестраиваете все отображение контролса, при этом поведение остается тем-же. ItemTemplate (тип DataTemplete) это шаблон для данных, которые контролс хостит внутри себя.

Да в WPF нет ComboCheckBox'а, но в этом и вся суть WPF. Если вам нужен ComboCheckBox, то вы берете обычный CheckBox и крутите у него ItemTemplate. Можно хоть "ComboCheckImageBox" сделать.

По поводу рамок, надо взять стандартный Template CheckBox'а и убрать оттуда рамки. Тут уж ничего не поделаешь.
...
Рейтинг: 0 / 0
Множественный выбор ComboBox (multiselect)
    #37234274
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюкиберете обычный CheckBox и крутите у него ItemTemplate.

ComboBox...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Множественный выбор ComboBox (multiselect)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]