我有一个绑定到客户联系人的可观察集合的列表视图。到目前为止,它工作得很好,但是作为新手,我不确定如何做下一部分。每个客户联系人都有几种联系人类型,我想在他们的姓名下显示这些类型。
因此,在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>
我想将绑定到标题的文本块替换为绑定到联系人类型中的项的列表视图/列表框/项目控件。
有点类似于这个问题:<WPF:绑定到类>中的列表,但没有所有代码隐藏。最好将其放在 XAML 中。
我会在这里做几件事:
-
简化您尝试执行的操作以隔离问题。而不是整个
ListView
业务,只需输入一个ItemsControl
:<ItemsControl ItemsSource="{Binding ContactTypes}" />
这将为您提供事物的默认视图,该视图可能只显示对象的数据类型(无论 ContactType 是什么),但它会让您知道绑定是否有效。如果是,你会在那里列出一些东西。如果不是,你就不会。 -
如果您没有列出任何内容,请使用 Snoop 深入了解并查找错误。Snoop显示数据绑定错误,允许您检查每个项目的
DataContext
等。
如果您 仍然遇到问题,如果您将类定义和代码发布到连接的地方,可能会使我们受益。可能存在一些其他基本问题(例如,最初发生绑定时 ContactTypes 属性是否为 null,并且您没有使用 INPC 让绑定系统知道它何时更改?