这是我的 XAML:
<Window x:Class="Test.MainWindow"....
DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
<Window.Resources>
<ResourceDictionary>
<ControlTemplate x:Key="lvTemplate" TargetType="{x:Type ListView}">
<ListView Width="200" ItemsSource="{TemplateBinding ItemsSource}">
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="Name"
DisplayMemberBinding="{Binding name}" />
</GridView>
</ListView.View>
</ListView>
</ControlTemplate>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ListView x:Name="lview" Template="{StaticResource lvTemplate }"
ItemsSource="{Binding collection}".../>
<ListView x:Name="lview2" ItemsSource="{Binding collection2}"...>
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="Name"
DisplayMemberBinding="{Binding name}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
所以,两个 ListView,它们之间的唯一区别是第一个是使用模板创建的。
如果我将元素添加到集合中,新行会出现在两个列表中,并且一切看起来都很好。但是当我在第一个 ListView (lview) 中选择一行时,没有选择任何项目(仅在视觉上它看起来被选中,在 SelectedIndex == -1,SelectedItem == null 后面的代码中)。还有一件奇怪的事,这个 ListView 的 View 属性为 null。这里有什么问题?
提前谢谢你!