diff --git a/src/ResXManager.View/Behaviors/EntityFilter.cs b/src/ResXManager.View/Behaviors/EntityFilter.cs
index 0e72dc0d..94b13228 100644
--- a/src/ResXManager.View/Behaviors/EntityFilter.cs
+++ b/src/ResXManager.View/Behaviors/EntityFilter.cs
@@ -1,4 +1,4 @@
-namespace ResXManager.View.Behaviors;
+namespace ResXManager.View.Behaviors;
using System;
using System.Text.RegularExpressions;
@@ -8,6 +8,7 @@
using Microsoft.Xaml.Behaviors;
using ResXManager.Infrastructure;
+using ResXManager.Model;
using Throttle;
@@ -26,21 +27,49 @@ public string? FilterText
///
public static readonly DependencyProperty FilterTextProperty =
DependencyProperty.Register(nameof(FilterText), typeof(string), typeof(EntityFilter),
- new FrameworkPropertyMetadata(null, (sender, _) => ((EntityFilter)sender).FilterText_Changed()));
+ new FrameworkPropertyMetadata(null, (sender, _) => ((EntityFilter)sender).Filter_Changed()));
+
+ public string? ProjectFilter
+ {
+ get => (string)GetValue(ProjectFilterProperty);
+ set => SetValue(ProjectFilterProperty, value);
+ }
+ ///
+ /// Identifies the dependency property
+ ///
+ public static readonly DependencyProperty ProjectFilterProperty =
+ DependencyProperty.Register(nameof(ProjectFilter), typeof(string), typeof(EntityFilter),
+ new FrameworkPropertyMetadata(null, (sender, _) => ((EntityFilter)sender).Filter_Changed()));
[Throttled(typeof(Throttle), 300)]
- private void FilterText_Changed()
+ private void Filter_Changed()
{
var listBox = AssociatedObject;
if (listBox == null)
return;
- var value = FilterText;
+ var textFilter = BuildTextFilter(FilterText);
+ var projectFilter = ProjectFilter;
- listBox.Items.Filter = BuildFilter(value);
+ if (textFilter == null && projectFilter == null)
+ {
+ listBox.Items.Filter = null;
+ return;
+ }
+
+ listBox.Items.Filter = item =>
+ {
+ if (projectFilter != null && item is ResourceEntity entity && !string.Equals(entity.ProjectName, projectFilter, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if (textFilter != null && !textFilter(item))
+ return false;
+
+ return true;
+ };
}
- public static Predicate