Связывание вложенного управления с использованием шаблона MVVM - PullRequest
2 голосов
/ 28 августа 2011

У меня проблема с привязкой вложенного элемента управления к моему шаблону MVVM.Это мой код XAML:

 <ItemsControl Grid.Column="1" ItemsSource="{Binding NotificationContacts}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <toolkit:Expander>
                        <toolkit:Expander.Header>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <TextBlock Text="{Binding ContactName}" Grid.Column="0" VerticalAlignment="Center"></TextBlock>
                                <Image Source="Images/answer_ok.png" Grid.Column="1" Margin="15,0,15,0" Width="27" Height="27"></Image>
                            </Grid>
                        </toolkit:Expander.Header>
                        <toolkit:Expander.Content>
                            <ListBox Margin="30,10,0,10" ItemsSource="{Binding NotificationContacts.Messages">
                                <ListBox.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding MessageName}"></TextBlock>
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>
                        </toolkit:Expander.Content>
                    </toolkit:Expander>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

Проблема в том, что элемент управления списком, расположенный в ExpanderControl Data Template, не привязан к данным.Элемент управления Listbox заполняется коллекцией EntityCollection с именем «Messages», которая содержится в родительском объекте «NotificationContacts», с которым ItemsControl связан с данными ...

Кто-нибудь знает, как решить эту проблему?

Спасибо взаранее !!!

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Вы пробовали это:

<ItemsControl Grid.Column="1" ItemsSource="{Binding NotificationContacts}">
  ......
   <ListBox Margin="30,10,0,10" ItemsSource="{Binding Messages}">
  .....
       <TextBlock Text="{Binding MessageName}"></TextBlock>

Если я правильно помню, когда вы находитесь "внутри" ItemContol, контекст привязки устанавливается на NotificationContacts. Поэтому можно использовать только «{Binding Messages}».

И, кстати, вам не хватает фигурной скобки на линии:

<ListBox Margin="30,10,0,10" ItemsSource="{Binding NotificationContacts.Messages">
0 голосов
/ 28 августа 2011

Call ItemsControl f.i. «ic» и использовать следующую привязку в ListBox

<ItemsControl x:Name="ic" Grid.Column="1" ItemsSource="{Binding NotificationContacts}">
     ...
     <ListBox Margin="30,10,0,10" ItemsSource="{Binding ElementName=ic, Path=DataContext.Messages}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...