2013-08-05 1 views
0

Кто-нибудь знает о способе ручного включения (включения галочки) на флажках CheckComboBox для WPFToolkit?Расширенные WPF Toolkit - CheckComboBox

К сожалению, элементы в Combo-box - это все строки.

Я пытаюсь включить все флаги, когда установлен флажок «Выбрать все».

+0

Вы пробовали использовать 'SelectedItems = "{Binding SelectedItems}"' – Shoe

+0

Это SelectedItem = "{Binding SelectedItems}" - но да, у меня есть :) –

+0

По к [документации] (http://wpftoolkit.codeplex.com/wikipage?title=CheckComboBox) есть как «SelectedItem», так и «SelectedItems» – Shoe

ответ

0

В конечном итоге я выбросил расширенный WPFToolkit из-за невозможности прямого доступа к флажкам.

Вместо этого я создал ComboBox и вручную определил флажки в нем, к которым я обращаюсь напрямую по имени, и там можно реализовать «Выбрать все», используя [Проверено/Не отмечено] [событие и использовать ComboBox SelectionChanged для отображения значение по умолчанию, которое выражает то, что было выбрано в формате CSV.

Возможно, это неудобно, но он выполняет свою работу.

PS. Мне не нужно было даже беспокоиться о DataTemplate для ComboBox

2

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

public class Descriptor : INotifyPropertyChanged 
{ 
    private bool isSelected; 

    public bool IsSelected 
    { 
     get 
     { 
      return this.isSelected; 
     } 
     set 
     { 
      if (this.isSelected != value) 
      { 
       this.isSelected = value; 
       // Raise INotifyPropertyChanged 
      } 
     } 
    } 

    public string Name { get; set; } 
} 

Создать коллекцию из них, а затем назначить их ItemsSource в CheckComboBox.

Чтобы обработать выбранное все, у нас есть опция с надписью: "" как первый элемент в коллекции, то если этот элемент отмечен, все элементы будут отменены, а все дело будет обрабатываться под капотом. Чтобы обработать выбранный выбор, он включает добавление события в класс дескриптора и его запуск каждый раз при изменении свойства IsSelected.

+0

Я вижу, что вы присущи INotifyPropertyChanged, но вы закомментировали '// Raise INotifyPropertyChanged'. Я немного запутался. Должен ли я сделать уведомление IsSelected или нет? – Felix

+1

@Fei Вам нужно поднять его. Мой комментарий направлен на то, чтобы указать, что он должен быть поднят без фактического обеспечения реализации. – Bijington

0

Один из способов в коде Позади

var ComboSelector = MyCheckComboBox as Xceed.Wpf.Toolkit.Primitives.Selector; 
foreach(var item in MyCheckComboBox.Items) 
ComboSelector.SelectedItems.Add(item);