我正在使用演示模型通过 TreeView
控件在我的应用程序中实现导航。我通过双向绑定(bind)将 TreeViewItem 的 IsSelected 属性绑定(bind)到我的 View 模型。当选择具有子节点的节点时,我希望选择该节点的第一个子节点而不是单击的节点。在我的演示模型上设置 IsSelected 属性时,TreeViewItem
似乎没有监听属性更改事件。第一个子节点已被选中,但父节点并未取消选择。这是我的演示模型中的代码。
public bool IsSelected {
get {
return this._isSelected;
}
set {
if(this._isSelected != value) {
this._isSelected = value;
if(this.Nodes.Count > 0) {
this._isSelected = false;
this.Nodes[0].IsSelected = true;
}
this.NotifyPropertyChanged("IsSelected");
}
}
}
这是我的 TreeViewItem
的样式:
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
最佳答案
我遇到了一个非常类似的问题,我发现当我通过代码选择一个子节点时,我还需要将焦点放在 TreeViewItem 包装器上,以便父节点将成为您所谓的“UnSelect”。所以在 xaml 中我添加了一个事件处理程序:
<EventSetter Event="TreeViewItem.Selected"
Handler="TreeViewItem_Selected"
/>
在分部类中:
Private Sub TreeViewItem_Selected(ByVal sender As System.Object, ByVal e As RoutedEventArgs)
If CType(sender, TreeViewItem) IsNot Nothing Then
CType(sender, TreeViewItem).Focus()
e.Handled = True
End If
End Sub
关于WPF TreeView 想要在选择父级时选择第一个子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/834267/