这是我的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。 这有什么不对?
先谢谢你!
答案 0 :(得分:1)
如果您希望在更多ListView
之间分享视图,可以使用x:Shared="False"
创建GridView
resoucre:
<GridView x:Key="gridView" x:Shared="False">
<GridViewColumn Width="140" Header="Name" DisplayMemberBinding="{Binding name}" />
</GridView>
然后您可以使用它,如下所示,在多个ListView
:
<ListView x:Name="lview" ItemsSource="{Binding collection}" View="{StaticResource gridView}"/>
<ListView x:Name="lview2" ItemsSource="{Binding collection2}" View="{StaticResource gridView}"/>