我正在使用 Linq To Sql 用 Segment 对象填充列表框,其中 Segment 是设计器创建/ORM 生成的类。
<Window x:Class="ICTemplates.Window1"
...
xmlns:local="clr-namespace:ICTemplates"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<DataTemplate x:Key="MyTemplate">
<!-- <DataTemplate DataType="x:Type local:Segment"> -->
// some stuff in here
</DataTemplate>
</Window.Resources>
<ListView x:Name="tvwSegments" ItemsSource="{Binding}" ItemTemplate="{StaticResource MyTemplate}" MaxHeight="200"/>
// code-behind
var queryResults = from segment in tblSegments
where segment.id <= iTemplateSid
select segment;
tvwSegments.DataContext = queryResults;
这行得通。
但是,如果我使用类型化数据模板(通过将 x:Key 替换为模板上的 DataType 属性,所有项目都显示为ICTemplates.Segment
(ToString() 返回值)
,其概念是它应该自动拾取数据模板,如果类型匹配。有人可以在这里发现错误吗?