我正在使用 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;
这个方法是有效的。
但是,如果我使用了一个Typed Data Template(通过将x:Key替换为模板上的DataType属性),所有项目都会显示为ICTemplates.Segment
(ToString()返回值)。
概念是如果类型匹配,则应自动选择数据模板。有人能发现这里的错误吗?