diff --git a/src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.axaml b/src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.axaml
new file mode 100644
index 0000000000..0cacc0031d
--- /dev/null
+++ b/src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.axaml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.cs b/src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.cs
new file mode 100644
index 0000000000..f81ef56549
--- /dev/null
+++ b/src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.cs
@@ -0,0 +1,54 @@
+using System;
+using Avalonia.Controls;
+using Avalonia.Data;
+using Avalonia.Styling;
+
+namespace Avalonia.Diagnostics.Controls
+{
+ internal class FilterTextBox : TextBox, IStyleable
+ {
+ public static readonly DirectProperty UseRegexFilterProperty =
+ AvaloniaProperty.RegisterDirect(nameof(UseRegexFilter),
+ o => o.UseRegexFilter, (o, v) => o.UseRegexFilter = v,
+ defaultBindingMode: BindingMode.TwoWay);
+
+
+ public static readonly DirectProperty UseCaseSensitiveFilterProperty =
+ AvaloniaProperty.RegisterDirect(nameof(UseCaseSensitiveFilter),
+ o => o.UseCaseSensitiveFilter, (o, v) => o.UseCaseSensitiveFilter = v,
+ defaultBindingMode: BindingMode.TwoWay);
+
+
+ public static readonly DirectProperty UseWholeWordFilterProperty =
+ AvaloniaProperty.RegisterDirect(nameof(UseWholeWordFilter),
+ o => o.UseWholeWordFilter, (o, v) => o.UseWholeWordFilter = v,
+ defaultBindingMode: BindingMode.TwoWay);
+
+ private bool _useRegexFilter, _useCaseSensitiveFilter, _useWholeWordFilter;
+
+ public FilterTextBox()
+ {
+ Classes.Add("filter-text-box");
+ }
+
+ public bool UseRegexFilter
+ {
+ get => _useRegexFilter;
+ set => SetAndRaise(UseRegexFilterProperty, ref _useRegexFilter, value);
+ }
+
+ public bool UseCaseSensitiveFilter
+ {
+ get => _useCaseSensitiveFilter;
+ set => SetAndRaise(UseCaseSensitiveFilterProperty, ref _useCaseSensitiveFilter, value);
+ }
+
+ public bool UseWholeWordFilter
+ {
+ get => _useWholeWordFilter;
+ set => SetAndRaise(UseWholeWordFilterProperty, ref _useWholeWordFilter, value);
+ }
+
+ Type IStyleable.StyleKey => typeof(TextBox);
+ }
+}
diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/FilterViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/FilterViewModel.cs
index 2d7d2a769c..f3145a2470 100644
--- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/FilterViewModel.cs
+++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/FilterViewModel.cs
@@ -9,7 +9,7 @@ namespace Avalonia.Diagnostics.ViewModels
internal class FilterViewModel : ViewModelBase, INotifyDataErrorInfo
{
private readonly Dictionary _errors = new Dictionary();
- private string _propertyFilter = string.Empty;
+ private string _propertyString = string.Empty;
private bool _useRegexFilter, _useCaseSensitiveFilter, _useWholeWordFilter;
private string _processedFilter;
private Regex _filterRegex;
@@ -25,13 +25,13 @@ namespace Avalonia.Diagnostics.ViewModels
{
void ClearError()
{
- if (_errors.Remove(nameof(PropertyFilter)))
+ if (_errors.Remove(nameof(FilterString)))
{
- ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(PropertyFilter)));
+ ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(FilterString)));
}
}
- _processedFilter = PropertyFilter.Trim();
+ _processedFilter = FilterString.Trim();
try
{
@@ -52,17 +52,17 @@ namespace Avalonia.Diagnostics.ViewModels
}
catch (Exception exception)
{
- _errors[nameof(PropertyFilter)] = exception.Message;
- ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(PropertyFilter)));
+ _errors[nameof(FilterString)] = exception.Message;
+ ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(FilterString)));
}
}
- public string PropertyFilter
+ public string FilterString
{
- get => _propertyFilter;
+ get => _propertyString;
set
{
- if (RaiseAndSetIfChanged(ref _propertyFilter, value))
+ if (RaiseAndSetIfChanged(ref _propertyString, value))
{
UpdateFilterRegex();
RefreshFilter?.Invoke(this, EventArgs.Empty);
diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml
index ab651b2a06..e6e19643a2 100644
--- a/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml
+++ b/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:Avalonia.Diagnostics.Converters"
xmlns:local="clr-namespace:Avalonia.Diagnostics.Views"
+ xmlns:controls="clr-namespace:Avalonia.Diagnostics.Controls"
xmlns:vm="clr-namespace:Avalonia.Diagnostics.ViewModels"
x:Class="Avalonia.Diagnostics.Views.ControlDetailsView"
x:Name="Main">
@@ -12,24 +13,19 @@
-
-
-
-
-
-
+
+
+
+
+