我遇到了使用我的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数据模板中的列表框控件没有数据绑定。 列表框控件由名为“Messages”的EntityCollection填充,该对象包含在ItemsControl与...数据绑定的父对象“NotificationContacts”中。
有谁知道如何解决这个问题?
提前致谢!!!
答案 0 :(得分:1)
你试过这个:
<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">
答案 1 :(得分:0)
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}">