@@ -11,7 +11,7 @@ namespace BootstrapBlazor.Components;
1111/// </summary>
1212/// <typeparam name="TValue"></typeparam>
1313[ JSModuleAutoLoader ( "select-tree" ) ]
14- public partial class SelectTree < TValue >
14+ public partial class SelectTree < TValue > : IModelEqualityComparer < TValue >
1515{
1616 /// <summary>
1717 /// 获得 样式集合
@@ -120,17 +120,17 @@ public partial class SelectTree<TValue>
120120
121121 private TreeViewItem < TValue > ? SelectedItem { get ; set ; }
122122
123- private List < TreeViewItem < TValue > > ? _itemCache ;
123+ private List < TreeViewItem < TValue > > ? ItemCache { get ; set ; }
124124
125125 [ NotNull ]
126126 private List < TreeViewItem < TValue > > ? ExpansionItemsCache { get ; set ; }
127127
128128 private IEnumerable < TreeViewItem < TValue > > GetExpansionItems ( )
129129 {
130- if ( _itemCache != Items )
130+ if ( ItemCache != Items )
131131 {
132- _itemCache = Items ?? new List < TreeViewItem < TValue > > ( ) ;
133- ExpansionItemsCache = TreeItemExtensions . GetAllItems ( _itemCache ) . ToList ( ) ;
132+ ItemCache = Items ?? new List < TreeViewItem < TValue > > ( ) ;
133+ ExpansionItemsCache = TreeItemExtensions . GetAllItems ( ItemCache ) . ToList ( ) ;
134134 }
135135 return ExpansionItemsCache ;
136136 }
@@ -147,7 +147,7 @@ protected override async Task OnParametersSetAsync()
147147
148148 if ( Value != null )
149149 {
150- var currentItem = GetExpansionItems ( ) . FirstOrDefault ( s => ComparerItem ( s . Value , Value ) ) ;
150+ var currentItem = GetExpansionItems ( ) . FirstOrDefault ( s => Equals ( s . Value , Value ) ) ;
151151 if ( currentItem != null )
152152 {
153153 SelectedItem = currentItem ;
@@ -192,12 +192,8 @@ private async Task ItemChanged(TreeViewItem<TValue> item)
192192 /// <summary>
193193 /// 比较数据是否相同
194194 /// </summary>
195- /// <param name="a "></param>
196- /// <param name="b "></param>
195+ /// <param name="x "></param>
196+ /// <param name="y "></param>
197197 /// <returns></returns>
198- protected bool ComparerItem ( TValue a , TValue b ) => ModelEqualityComparer ? . Invoke ( a , b )
199- ?? Utility . GetKeyValue < TValue , object > ( a , CustomKeyAttribute ) ? . Equals ( Utility . GetKeyValue < TValue , object > ( b , CustomKeyAttribute ) )
200- ?? ModelComparer . EqualityComparer ( a , b )
201- ?? a ? . Equals ( b )
202- ?? false ;
198+ public bool Equals ( TValue ? x , TValue ? y ) => this . Equals < TValue > ( x , y ) ;
203199}
0 commit comments