单击文本区域时未选择 ListViewItem
ListViewItem is not selected when I clicked on the text area
我正在使用 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;
列表视图显示人员的姓名,但是当我准确地点击姓名时没有任何反应(该项目未获得焦点并且 SelectionChanged 事件不起作用)但是如果我点击列表视图项目中姓名的右侧部分它作品
我认为已连接到数据神庙,因为当我删除模板并将 person 的 ToString 方法覆盖到 return this.Name 时,它工作正常。
有什么想法吗?
谢谢。
您不应该在 DataTemplate 中使用 ListViewItem
,这是一个 ContentControl,它通常描述内容应该如何在 ContentControl 中显示,而不是其他方式 :P
您的 DataTemplate 正在生成这个(简化的)可视化树:
ListView
ItemsPresenter
ListViewItem
ContentPresenter
ListViewItem
额外的 ListViewItem 可能吞噬了 Click 事件。相反,使用类似 TextBlock 的东西来显示文本,常规的 ListViewItem 行为应该按预期工作。
<DataTemplate Datatype="{x:Type local:Person}">
<TextBlock Text="{Binding Path=Name}">
</DataTemplates>
我正在使用 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;
列表视图显示人员的姓名,但是当我准确地点击姓名时没有任何反应(该项目未获得焦点并且 SelectionChanged 事件不起作用)但是如果我点击列表视图项目中姓名的右侧部分它作品
我认为已连接到数据神庙,因为当我删除模板并将 person 的 ToString 方法覆盖到 return this.Name 时,它工作正常。
有什么想法吗?
谢谢。
您不应该在 DataTemplate 中使用 ListViewItem
,这是一个 ContentControl,它通常描述内容应该如何在 ContentControl 中显示,而不是其他方式 :P
您的 DataTemplate 正在生成这个(简化的)可视化树:
ListView
ItemsPresenter
ListViewItem
ContentPresenter
ListViewItem
额外的 ListViewItem 可能吞噬了 Click 事件。相反,使用类似 TextBlock 的东西来显示文本,常规的 ListViewItem 行为应该按预期工作。
<DataTemplate Datatype="{x:Type local:Person}">
<TextBlock Text="{Binding Path=Name}">
</DataTemplates>