【发布时间】:2011-08-29 16:57:09
【问题描述】:
我有一个 ListView 绑定到 CustomerContacts 的 ObservableCollection。 到目前为止它工作得很好,但是对于这方面的新手,我不知道如何做下一部分。 每个客户联系人都有几种联系人类型,我想在他们的名字下显示。
所以在 CustomerContacts 内部我有另一个 ObservableCollection 的 ContactTypes。
这是我当前的数据模板:
<DataTemplate x:Key="iconTemplate">
<DockPanel Height="133" Width="150">
<Image Source="/Tracks%203.5;component/Images/NoPic.png" Height="25" Width="25" Margin="1,0" />
<TextBlock DockPanel.Dock="Top" Text="{Binding FullName}" Margin="5,3,5,0" FontWeight="Bold" HorizontalAlignment="Left" />
<<TextBlock Text="{Binding Title}" Margin="5,0,5,3" HorizontalAlignment="Left" />>
</DockPanel>
</DataTemplate>
这是我第一次尝试将列表视图放入其中:
<DataTemplate x:Key="iconTemplate">
<DockPanel Height="133" Width="150">
<Image Source="/Tracks%203.5;component/Images/NoPic.png" Height="25" Width="25" Margin="1,0" />
<TextBlock DockPanel.Dock="Top" Text="{Binding FullName}" Margin="5,3,5,0" FontWeight="Bold" HorizontalAlignment="Left" />
<ListView ItemsSource="{Binding ContactTypes}">
<ListView.Template>
<ControlTemplate TargetType="ItemsControl">
<ItemsPresenter/>
</ControlTemplate>
</ListView.Template>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Margin="3,0,0,0" HorizontalAlignment="Center" Text="{Binding Path=ContactType}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<!--<TextBlock Text="{Binding Title}" Margin="5,0,5,3" HorizontalAlignment="Left" />-->
</DockPanel>
</DataTemplate>
我想将绑定到 Title 的 TextBlock 替换为绑定到 ContactTypes 中项目的 ListView/ListBox/ItemsControl。
有点类似于这个问题:WPF: bind to a List inside a class> 但没有所有代码隐藏。将它包含在 XAML 中会很好。
【问题讨论】:
-
你试过添加listView吗?当你尝试时发生了什么?
-
我认为它不起作用,因为我的内部 ListView
<ListView ItemsSource="{Binding ContactTypes}">实际上并没有绑定到 ObservableCollection。例如,在我的外部 Listview 中,我必须在代码隐藏Me.lstContacts.ItemsSource = contacts中设置 ItemsSource,否则它将不起作用。我想我必须弄清楚如何将 ObservableCollection 联系人变成一个 windows 属性,也许我也必须使用内部列表视图来做到这一点?将ContactTypes 变成一个属性?
标签: wpf vb.net data-binding listview observablecollection