0

我有一个看起来像这样的 TreeView:

Section1
  item1
  item2
Section2
  item1
  item2

在我的项目中,永远不能选择“部分”元素,因此在我的 xaml 中,我已将其禁用,如下所示:

<TreeView.ItemContainerStyle>
     <Style TargetType="{x:Type TreeViewItem}">
     <Setter Property="Focusable" Value="{Binding HasDetails}"/>
     </Style>
</TreeView.ItemContainerStyle>

这很好用,我可以选择“项目”元素,但不能选择“部分”元素。我的问题是当我选择了一个“项目”然后折叠“部分”时,“部分”元素被选中。我该如何防止这种情况发生?

4

1 回答 1

0

您可以在 TreeViewItem 上使用 Selected 事件(参考:http: //msdn.microsoft.com/en-us/library/system.windows.controls.treeviewitem.selected.aspx )。

当 Section1 或 Section2 触发此事件时,您可以将 TreeViewItem 上的 IsSelected 属性(参考:http: //msdn.microsoft.com/en-us/library/system.windows.controls.treeviewitem.isselected.aspx)设置为错误的。

您还可以在 TreeView 本身上使用 SelectedItemChanged 事件(参考:http: //msdn.microsoft.com/en-us/library/system.windows.controls.treeview.selecteditemchanged.aspx)取消选择特定项目.

确保在设置 IsSelect 属性之前取消订阅,否则事件可能会触发多次。并且不要忘记在设置 IsSelect 属性后重新订阅该事件。

编辑:或者更好的是,使用 TreeViewItem 上的 Collapsed 事件(参考:http: //msdn.microsoft.com/en-us/library/system.windows.controls.treeviewitem.collapsed.aspx)。

于 2013-03-29T02:08:51.453 回答