diff --git a/src/Framework/Framework/Controls/ItemsControl.cs b/src/Framework/Framework/Controls/ItemsControl.cs index e44117ac5c..953b0228ea 100644 --- a/src/Framework/Framework/Controls/ItemsControl.cs +++ b/src/Framework/Framework/Controls/ItemsControl.cs @@ -99,22 +99,23 @@ public static void OnCompilation(ResolvedControl control, BindingCompilationServ protected IBinding GetIndexBinding(IDotvvmRequestContext context) { - var binding = GetValueRaw(Internal.CurrentIndexBindingProperty) as IBinding; - if (binding == null) + var result = GetValueRaw(Internal.CurrentIndexBindingProperty) as IBinding; + if (result is {}) + { + return result; + } + else { // slower path: create the _index binding at runtime and cache it var bindingService = context.Services.GetRequiredService(); var dataContext = GetDataSourceBinding().GetProperty().DataContext; - binding = bindingService.Cache.CreateCachedBinding( - "_index", new object[] { dataContext }, - () => new ValueBindingExpression(bindingService, new object?[] { + return bindingService.Cache.CreateCachedBinding("_index", new object[] { dataContext }, () => + new ValueBindingExpression(bindingService, new object?[] { dataContext, new ParsedExpressionBindingProperty(CreateIndexBindingExpression(dataContext)) })); } - return binding; - } } }