我正在使用ListView来显示一个人'名单使用数据模板:
<Windows.Resources>
<DataTemplate Datatype="{x:Type local:Person}">
<ListViewItem Content="{Binding Path=Name}">
</DataTemplates>
</Windows.Resources>
<ListView Name="myList" itemSource="{Binding}">
背后的代码是
ObservableCollection<Person> lst = SomeMethod();
myList.DataContext = lst;
列表视图显示人员&#39;名称,但当我完全点击名称没有发生任何事情(项目没有聚焦,SelectionChanged事件不起作用),但如果我点击listviewitem中的名称的右侧部分,它的工作原理
我认为是连接到数据集,因为当我删除模板并覆盖人的ToString方法以返回this.Name时它可以正常工作。
任何想法?
感谢。
答案 0 :(得分:0)
你不应该在DataTemplate中使用ListViewItem
,这是一个ContentControl,它通常描述内容应该如何显示内部 ContentControls,而不是相反:P < / p>
您的DataTemplate正在生成此(简化)可视树:
ListView
ItemsPresenter
ListViewItem
ContentPresenter
ListViewItem
额外的ListViewItem可能会吞下Click事件。相反,使用像TextBlock这样的东西来显示文本,并且常规的ListViewItem行为应该按预期工作。
<DataTemplate Datatype="{x:Type local:Person}">
<TextBlock Text="{Binding Path=Name}">
</DataTemplates>