diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs index f78d4867ff..a49a7a36d4 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs @@ -75,8 +75,9 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings } internal IEnumerable Elements => _elements; - - internal SourceMode SourceMode => _elements.Count > 0 && _elements[0] is IControlSourceBindingPathElement ? SourceMode.Control : SourceMode.Data; + + internal SourceMode SourceMode => _elements.OfType().Any() + ? SourceMode.Control : SourceMode.Data; internal object RawSource { get; } diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs index 77067fa517..9f178672ac 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs @@ -734,12 +734,12 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions { var xaml = @" + Focusable='True'> @@ -747,10 +747,11 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions "; var contentControl = AvaloniaRuntimeXamlLoader.Parse(xaml); + contentControl.DataContext = new TestDataContext(); // should be ignored contentControl.Measure(new Size(10, 10)); var result = contentControl.GetTemplateChildren().OfType().First(); - Assert.Equal("Hello", result.Content); + Assert.Equal(false, result.Focusable); } } @@ -781,6 +782,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions "; var textBox = AvaloniaRuntimeXamlLoader.Parse(xaml); + textBox.DataContext = new TestDataContext(); // should be ignored textBox.Measure(new Size(10, 10)); var result = textBox.GetTemplateChildren().OfType().First();