Takoooooo 4 years ago
parent
commit
60b3e028b5

+ 15 - 1
src/Avalonia.Controls/AutoCompleteBox.cs

@@ -2094,7 +2094,21 @@ namespace Avalonia.Controls
                 bool inResults = !(stringFiltering || objectFiltering);
                 if (!inResults)
                 {
-                    inResults = stringFiltering ? TextFilter(text, FormatValue(item)) : ItemFilter(text, item);
+                    if (stringFiltering)
+                    {
+                        inResults = TextFilter(text, FormatValue(item));
+                    }
+                    else
+                    {
+                        if (ItemFilter == null)
+                        {
+                            throw new Exception("ItemFilter property can not be unassigned when FilterMode has value AutoCompleteFilterMode.Custom");
+                        }
+                        else
+                        {
+                            inResults = ItemFilter(text, item);
+                        }
+                    }
                 }
 
                 if (view_count > view_index && inResults && _view[view_index] == item)

+ 10 - 0
tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs

@@ -105,6 +105,16 @@ namespace Avalonia.Controls.UnitTests
             });
         }
 
+        [Fact]
+        public void Custom_FilterMode_Without_ItemFilter_Setting_Throws_Exception()
+        {
+            RunTest((control, textbox) =>
+            {
+                control.FilterMode = AutoCompleteFilterMode.Custom;
+                Assert.Throws<Exception>(() => { control.Text = "a"; });
+            });
+        }
+
         [Fact]
         public void Text_Completion_Via_Text_Property()
         {