2008-11-19 3 views
1

У меня есть элемент управления listbox. Я создал ItemTemplate для этого listbox, который имеет в нем два элемента управления.Использование Listbox в ItemTemplate

  1. Кнопка переключения
  2. управления Listbox

Структура

<Listbox x:Key="Listbox1" ItemTemplate={StaticResource ListBox1ParentItemTemplate}> 

</Listbox> 

<Datatemplate x:Key="ListBox1ParentItemTemplate"> 
    <ToggleButton></ToggleButton> 
    <Listbox x:Key="Listbox1" ItemTemplate={StaticResource ListBox2ParentItemTemplate}> 
    </Listbox> 
</Datatemplate> 

<Datatemplate x:Key="ListBox2ParentItemTemplate"> 
    <TextBlock Text="{Binding Mode=Default, [email protected]}" TextWrapping="Wrap"/> 
    <CheckBox DockPanel.Dock="Right" /> 
</Datatemplate> 

В основном Listbox2 является CheckedListbox. Мое требование таково: 1. Привяжите ToggleButton к Listbox1 SelectedItem i.e, если в элементе Listbox1 выбрано 4 элемента, то контрольная точка 4-го элемента должна быть проверена автоматически, а другая togglebutton должна быть снята. 2. Если установлен флажок ToggleButton, все флажки в Listbox2 должны быть выбраны автоматически. Также, если один из флажков в Listbox2 не выбран, то ToogleButton следует автоматически снять. (Эта функциональность похожа на TreeNode и функциональность дочернего элемента. Если отмечен parentnode, все дочерние элементы выбираются и если один из дочерних узлов не выбран, родительский класс должен быть отменен).

ответ

1

Образец кода поможет нам лучше понять вашу проблему.

Похоже, вы пытаетесь добавить некоторую бизнес-логику к пользовательскому интерфейсу, попробуйте создать правильный ViewModel, а затем привяжите его к элементу управления, чтобы вычисления можно было выполнить на стороне ViewModel, и на основе вашей логики вы можете обновить UI- (INotifyPropertyChanged)

ViewModel будет иметь свойство Bool (Bind to ToggleButton), которое изменяется в соответствии с другими 3 bool (которое привязывается к 4 флажкам). При любом вызове сеттера внутри ViewModel необходимо пересчитать (он будет логической операцией AND) все свойства снова. Поскольку режим привязки CheckBox по умолчанию установлен на TwoWay, его будет очень легко реализовать.

Смежные вопросы