Browse Source
Merge branch 'master' into add-content-presenters-fluent-textbox
pull/4422/head
Jumar Macato
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
12 additions and
3 deletions
-
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs
-
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs
|
|
|
@ -74,11 +74,18 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers |
|
|
|
{ |
|
|
|
// Infer data type from collection binding on a control that displays items.
|
|
|
|
var parentObject = context.ParentNodes().OfType<XamlAstConstructableObjectNode>().FirstOrDefault(); |
|
|
|
if (parentObject != null && context.GetAvaloniaTypes().IItemsPresenterHost.IsDirectlyAssignableFrom(parentObject.Type.GetClrType())) |
|
|
|
if (parentObject != null) |
|
|
|
{ |
|
|
|
inferredDataContextTypeNode = InferDataContextOfPresentedItem(context, on, parentObject); |
|
|
|
var parentType = parentObject.Type.GetClrType(); |
|
|
|
|
|
|
|
if (context.GetAvaloniaTypes().IItemsPresenterHost.IsDirectlyAssignableFrom(parentType) |
|
|
|
|| context.GetAvaloniaTypes().ItemsRepeater.IsDirectlyAssignableFrom(parentType)) |
|
|
|
{ |
|
|
|
inferredDataContextTypeNode = InferDataContextOfPresentedItem(context, on, parentObject); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
|
|
|
|
if (inferredDataContextTypeNode is null) |
|
|
|
{ |
|
|
|
inferredDataContextTypeNode = new AvaloniaXamlIlUninferrableDataContextMetadataNode(on); |
|
|
|
} |
|
|
|
|
|
|
|
@ -42,6 +42,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers |
|
|
|
|
|
|
|
public IXamlType DataTemplate { get; } |
|
|
|
public IXamlType IItemsPresenterHost { get; } |
|
|
|
public IXamlType ItemsRepeater { get; } |
|
|
|
public IXamlType ReflectionBindingExtension { get; } |
|
|
|
|
|
|
|
public IXamlType RelativeSource { get; } |
|
|
|
@ -98,6 +99,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers |
|
|
|
ResolveByNameExtension = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.ResolveByNameExtension"); |
|
|
|
DataTemplate = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.Templates.DataTemplate"); |
|
|
|
IItemsPresenterHost = cfg.TypeSystem.GetType("Avalonia.Controls.Presenters.IItemsPresenterHost"); |
|
|
|
ItemsRepeater = cfg.TypeSystem.GetType("Avalonia.Controls.ItemsRepeater"); |
|
|
|
ReflectionBindingExtension = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.ReflectionBindingExtension"); |
|
|
|
RelativeSource = cfg.TypeSystem.GetType("Avalonia.Data.RelativeSource"); |
|
|
|
} |
|
|
|
|