@@ -24,6 +24,27 @@ public partial class ServerListPageViewModel
24
24
private string _selectedTabName = TAB_ALL_NAME ;
25
25
public string SelectedTabName { get => _selectedTabName ; private set => SetAndNotifyIfChanged ( ref _selectedTabName , value ) ; }
26
26
27
+
28
+ private void OnTagsChanged ( )
29
+ {
30
+ // 当修改了tags后,将无效的tag筛选器移除。
31
+ var needRemove = new List < string > ( ) ;
32
+ var filters = TagFilters . ToList ( ) ;
33
+ foreach ( var filter in filters )
34
+ {
35
+ if ( AppData . TagList . All ( x => x . Name != filter . TagName ) )
36
+ {
37
+ needRemove . Add ( filter . TagName ) ;
38
+ }
39
+ }
40
+
41
+ if ( ! needRemove . Any ( ) ) return ;
42
+ foreach ( var tag in needRemove )
43
+ {
44
+ FilterTagsControl ( tag , TagFilter . FilterTagsControlAction . Remove ) ;
45
+ }
46
+ }
47
+
27
48
private List < TagFilter > _tagFilters = new List < TagFilter > ( ) ;
28
49
public List < TagFilter > TagFilters
29
50
{
@@ -82,11 +103,13 @@ public List<TagFilter> TagFilters
82
103
private void FilterTagsControl ( object ? o , TagFilter . FilterTagsControlAction action )
83
104
{
84
105
string newTagName ;
85
- if ( o is Tag obj && AppData . TagList . Any ( x => x . Name == obj . Name ) )
106
+ if ( o is Tag obj
107
+ && ( AppData . TagList . Any ( x => x . Name == obj . Name ) || action == TagFilter . FilterTagsControlAction . Remove ) )
86
108
{
87
109
newTagName = obj . Name ;
88
110
}
89
- else if ( o is string str && AppData . TagList . Any ( x => x . Name == str ) )
111
+ else if ( o is string str
112
+ && ( AppData . TagList . Any ( x => x . Name == str ) || action == TagFilter . FilterTagsControlAction . Remove ) )
90
113
{
91
114
newTagName = str ;
92
115
}
0 commit comments