diff --git a/src/Avalonia.Base/Metadata/InheritDataTypeFromItemsAttribute.cs b/src/Avalonia.Base/Metadata/InheritDataTypeFromItemsAttribute.cs
index e9bd6ab89f..fac8cd8737 100644
--- a/src/Avalonia.Base/Metadata/InheritDataTypeFromItemsAttribute.cs
+++ b/src/Avalonia.Base/Metadata/InheritDataTypeFromItemsAttribute.cs
@@ -9,7 +9,7 @@ namespace Avalonia.Metadata;
/// A typical usage example is a ListBox control, where is defined on the ItemTemplate property,
/// allowing the template to inherit the data type from the Items collection binding.
///
-[AttributeUsage(AttributeTargets.Property, AllowMultiple = true, Inherited = true)]
+[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public sealed class InheritDataTypeFromItemsAttribute : Attribute
{
///
diff --git a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
index b89a75787f..9c060f2258 100644
--- a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
+++ b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
@@ -235,7 +235,6 @@ namespace Avalonia.Controls.Primitives
///
[AssignBinding]
[InheritDataTypeFromItems(nameof(ItemsSource))]
- [InheritDataTypeFromItems(nameof(Items))]
public IBinding? SelectedValueBinding
{
get => GetValue(SelectedValueBindingProperty);
diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs
index 681d2a38d4..a24d4eb6e9 100644
--- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs
+++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs
@@ -73,32 +73,27 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
// Infer data type from collection binding on a control that displays items.
var property = context.ParentNodes().OfType().FirstOrDefault();
var attributeType = context.GetAvaloniaTypes().InheritDataTypeFromItemsAttribute;
- var attributes = property?.Property?.GetClrProperty().CustomAttributes
- .Where(a => a.Type == attributeType).ToList();
-
- if (attributes?.Count > 0)
+ var attribute = property?.Property?.GetClrProperty().CustomAttributes
+ .FirstOrDefault(a => a.Type == attributeType);
+
+ if (attribute is not null)
{
- foreach (var attribute in attributes)
+ var propertyName = (string)attribute.Parameters.First();
+ XamlAstConstructableObjectNode parentObject;
+ if (attribute.Properties.TryGetValue("AncestorType", out var type)
+ && type is IXamlType xamlType)
{
- var propertyName = (string)attribute.Parameters.First();
- XamlAstConstructableObjectNode parentObject;
- if (attribute.Properties.TryGetValue("AncestorType", out var type)
- && type is IXamlType xamlType)
- {
- parentObject = context.ParentNodes().OfType()
- .FirstOrDefault(n => n.Type.GetClrType().FullName == xamlType.FullName);
- }
- else
- {
- parentObject = context.ParentNodes().OfType().FirstOrDefault();
- }
-
- if (parentObject != null)
- {
- inferredDataContextTypeNode = InferDataContextOfPresentedItem(context, on, parentObject, propertyName);
- if (inferredDataContextTypeNode != null)
- break;
- }
+ parentObject = context.ParentNodes().OfType()
+ .FirstOrDefault(n => n.Type.GetClrType().FullName == xamlType.FullName);
+ }
+ else
+ {
+ parentObject = context.ParentNodes().OfType().FirstOrDefault();
+ }
+
+ if (parentObject != null)
+ {
+ inferredDataContextTypeNode = InferDataContextOfPresentedItem(context, on, parentObject, propertyName);
}
}