@@ -50,37 +50,36 @@ public partial class TreeView<TItem> : IModelEqualityComparer<TItem>
5050 . AddClass ( "visible" , item . HasChildren || item . Items . Count > 0 )
5151 . AddClass ( NodeIcon , ! item . IsExpand )
5252 . AddClass ( ExpandNodeIcon , item . IsExpand )
53- . AddClass ( "disabled" , ! CanExpandWhenDisabled && GetItemDisabledState ( item ) )
53+ . AddClass ( "disabled" , IsDisabled || ( ! CanExpandWhenDisabled && item . IsDisabled ) )
5454 . Build ( ) ;
5555
5656 private string ? NodeLoadingClassString => CssBuilder . Default ( "node-icon node-loading" )
5757 . AddClass ( LoadingIcon )
5858 . Build ( ) ;
5959
60- /// <summary>
61- /// 获得/设置 当前行样式
62- /// </summary>
63- /// <param name="item"></param>
64- /// <returns></returns>
65- private string ? GetItemClassString ( TreeViewItem < TItem > item ) => CssBuilder . Default ( "tree-item" )
60+ private string ? GetContentClassString ( TreeViewItem < TItem > item ) => CssBuilder . Default ( "tree-content" )
6661 . AddClass ( "active" , ActiveItem == item )
67- . AddClass ( "disabled" , ! CanExpandWhenDisabled && GetItemDisabledState ( item ) )
68- . Build ( ) ;
69-
70- /// <summary>
71- /// 获得/设置 Tree 样式
72- /// </summary>
73- /// <param name="item"></param>
74- /// <returns></returns>
75- private static string ? GetTreeClassString ( TreeViewItem < TItem > item ) => CssBuilder . Default ( "tree-ul" )
76- . AddClass ( "show" , item . IsExpand )
7762 . Build ( ) ;
7863
7964 private string ? GetNodeClassString ( TreeViewItem < TItem > item ) => CssBuilder . Default ( "tree-node" )
8065 . AddClass ( "disabled" , GetItemDisabledState ( item ) )
8166 . Build ( ) ;
8267
83- private bool TriggerNodeArrow ( TreeViewItem < TItem > item ) => ( CanExpandWhenDisabled || ! GetItemDisabledState ( item ) ) && ( item . HasChildren || item . Items . Count > 0 ) ;
68+ private bool CanTriggerClickNode ( TreeViewItem < TItem > item )
69+ {
70+ // 返回 false 时禁止触发 OnClick
71+ if ( IsDisabled )
72+ {
73+ return false ;
74+ }
75+
76+ if ( CanExpandWhenDisabled )
77+ {
78+ return true ;
79+ }
80+
81+ return ! item . IsDisabled ;
82+ }
8483
8584 private bool TriggerNodeLabel ( TreeViewItem < TItem > item ) => ! GetItemDisabledState ( item ) ;
8685
@@ -592,7 +591,7 @@ private async Task<IEnumerable<IExpandableNode<TItem>>> GetChildrenRowAsync(Tree
592591 private async Task OnClick ( TreeViewItem < TItem > item )
593592 {
594593 ActiveItem = item ;
595- if ( ClickToggleNode && TriggerNodeArrow ( item ) )
594+ if ( ClickToggleNode && CanTriggerClickNode ( item ) )
596595 {
597596 await OnToggleNodeAsync ( item ) ;
598597 }
@@ -874,20 +873,15 @@ private List<TreeViewItem<TItem>> GetTreeRows(List<TreeViewItem<TItem>> items)
874873 }
875874 }
876875
877- private string ? GetTreeRowStyle ( TreeViewItem < TItem > item )
876+ private static string ? GetTreeRowStyle ( TreeViewItem < TItem > item )
878877 {
879- string ? style = null ;
880- if ( IsVirtualize )
878+ var level = 0 ;
879+ var parent = item . Parent ;
880+ while ( parent != null )
881881 {
882- var level = 0 ;
883- var parent = item . Parent ;
884- while ( parent != null )
885- {
886- level ++ ;
887- parent = parent . Parent ;
888- }
889- style = $ "--bb-tree-view-level: { level } ;";
882+ level ++ ;
883+ parent = parent . Parent ;
890884 }
891- return style ;
885+ return $ "--bb-tree-view-level: { level } ;" ;
892886 }
893887}
0 commit comments