单击文本区域时未选中ListViewItem

时间:2015-07-09 07:52:02

标签: wpf listview datatemplate listviewitem

我正在使用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时它可以正常工作。

任何想法?

感谢。

1 个答案:

答案 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>