我正在尝试将Listbox ItemSource绑定到多个列表的集合。即。
列出PersonCollection
列出人
列表集
现在我需要显示这两个列表中的项目。在wpf中你可以使用HierarchicalDataTemplate我相信,但不知道如何在Windows Phone 7中做到这一点。尝试使用Blend并生成以下数据模板。
<DataTemplate x:Key="PersonDataTemplate">
<Grid>
<StackPanel Margin="0,0,1,0" Orientation="Vertical" VerticalAlignment="Top">
<TextBlock Margin="0,0,1,0" TextWrapping="Wrap" Text="{Binding Person[0].Name}" d:LayoutOverrides="Width"/>
<TextBlock Margin="0,0,1,0" TextWrapping="Wrap" Text="{Binding Collection[0].Total}" d:LayoutOverrides="Width"/>
</StackPanel>
</Grid>
</DataTemplate>
<ListBox Height="300" x:Name="personList" ItemsSource="{Binding PersonCollection}" Margin="10,0" ItemTemplate="{StaticResource PersonDataTemplate}"/>
我还有其他办法吗?我试图将DataTemplate中Textbox的DataContext设置为单个数组,但似乎不起作用。除了确认Windows Phone 7不支持HierarchicalDataTemplate之外,无法在网上找到任何类似内容。
我有其他办法,但没有优雅......
提前致谢。
此致
答案 0 :(得分:1)
我认为你的场景可以用两级ListBox而不是Tree-Heirarchy来解决。看看下面的技巧是否有效。现在,您将在Grid中并排看到两个内部集合,这是另外两个ItemsControls(或者您可以使用ListBoxes)
<DataTemplate x:Key="PersonCollextionItem">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<ItemsControl ItemsSource="{Binding ListPerson}" ItemTemplate="{StaticResource Templ1}" Grid.Column="0"/>
<ItemsControl ItemsSource="{Binding ListCollection}" ItemTemplate="{StaticResource Templ2}" Grid.Column="1"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="Templ1">
<TextBlock Margin="0,0,1,0" Text="{Binding Name}" />
</DataTemplate>
<DataTemplate x:Key="Templ2">
<TextBlock Margin="0,0,1,0" Text="{Binding Total}" />
</DataTemplate>
<ListBox Height="300" x:Name="personList" ItemsSource="{Binding PersonCollection}" Margin="10,0" ItemTemplate="{StaticResource PersonCollextionItem}"/>