wpf вложенная привязка данных для списков и списков - PullRequest
2 голосов
/ 25 июля 2011

Я новичок в WPF и привязке данных. Мне нужно привязать заголовок экспандера к списку (имен) и контент экспандера к списку (служб). Я еще больше запутался после прочтения руководств MS по привязке данных (как и где использовать staticResource, Path и т. Д.)

У меня есть

-------------
class Person 

name as string 
List servies as List (Of Services)

end class
--------------
class Service

name as string 
end class
----------------

В моем основном классе Application.vb у меня есть список объектов Person

p1 as List(of Person)

Я инициализирую их все как фиктивные значения. в Application.xaml у меня есть

<Expander Name="listBox4" VerticalAlignment="Top" 
 HorizontalAlignment="Left" Header="   {Binding}" Content="{Binding}" >

  <Expander.HeaderTemplate >

      <DataTemplate>
         <TextBlock Text="{Binding}"/>
      </DataTemplate>

   </Expander.HeaderTemplate> 

   <Expander.ContentTemplate>

      <DataTemplate >
        <ListBoxItem Content="{Binding}"/> 
      </DataTemplate>

    </Expander.ContentTemplate>                 

</Expander >

Как связать текстовый блок заголовка с именем человека и элементом внутреннего списка со своими службами?

1 Ответ

3 голосов
/ 25 июля 2011

Поскольку вы работаете со списком объектов, вам необходимо использовать ItemsControl.Расширители могут иметь дело только с одним DataContext, в то время как ItemsControls предназначались для работы со списками или коллекциями

Ваш код должен выглядеть примерно так:

<ItemsControl ItemsSource="{Binding PersonList}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Expander Header="{Binding Name}">
                <ListBox ItemsSource="{Binding Services}" />
            </Expander>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Это создает цикл, который говорит:PersonList и для каждого Персона генерирует Расширитель с Заголовком, равным имени Лица, и Расширенным Контентом, равным ListBox, который отображает все Услуги этого Лица.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...