2015-06-04 2 views
0

Я вид определяется, как показано ниже,ItemsControl выбор пункта привязки

<ItemsControl ItemsSource={Binding C1.Coll1}> 
    .... 
    <ItemsControl.ItemTemplate> 
     <DataTemplate DataType="{x:Type vm:C2}"> 
     <Expander Header="{Binding Name}"> 
      <ListBox ItemsSource={Binding Coll2}/> 
     </Expander> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Соответствующий вид модели что-то подобное,

Class C1 
{ 
    public Coll1<C2>; 
} 

Class C2 
{ 
    Public Name, 
    Public Coll2 
} 

можно связать событие выбора из выпадающего списка в С2. Когда это событие срабатывает, я хочу запустить его до C1. Каковы мои альтернативы? Я попытался привязать событие выбора к C1, но это не сработало. Есть ли способ связать его или есть какие-то альтернативы для этого?

Любая помощь очень ценится.

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

+0

'ItemSorce' не будет компилироваться, и именно здесь я перестаю читать ваш код. Всегда копируйте/вставляйте фактические материалы. –

ответ

0

The ItemsSource вашего ItemsControl уже в C1.

Так что вам просто нужно создать двустороннюю привязку SelectedItem вашего ItemsSource к свойству в C1. Вам нужно перейти с элемента управления ItemsControl на потомка селектора, например. Посмотреть список. У вас все еще есть контроль над ItemsSource и внешним видом/шаблонами.

<ListView ItemsSource={Binding CollectionOfC2Items} 
       SelectedItem="{Binding SelectedC2Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> 

Устанавливая UpdateSourceTrigger к «PropertyChanged» вы заставите свойство в С1 (связывание источника) для обновления, как только изменения выбора в ItemsControl.

+0

Спасибо за ответ Джеймс, можем ли мы добавить привязку для SelectedItem в ItemsControl? – BUB

+0

Вы правы - нет концепции SelectedItem с ItemsControl. Если вам действительно не нужен элемент ItemsControl, почему бы просто не использовать List ... Я соответствующим образом обновлю ответ. –

+0

Мне нужен элемент управления, поскольку содержимое списка является динамическим. Количество элементов (Expander + Listbox, которое ведет себя как сгруппированный список), и элементы в Listbox продолжают меняться. Если у вас есть лучший подход, дайте мне знать. – BUB

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