|
|
@ -1,4 +1,6 @@ |
|
|
using System; |
|
|
#nullable enable |
|
|
|
|
|
|
|
|
|
|
|
using System; |
|
|
using System.Collections; |
|
|
using System.Collections; |
|
|
using System.Collections.Generic; |
|
|
using System.Collections.Generic; |
|
|
using System.Collections.ObjectModel; |
|
|
using System.Collections.ObjectModel; |
|
|
@ -48,7 +50,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding StringProperty}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding StringProperty}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -74,7 +76,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding StringProperty}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding StringProperty}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -100,7 +102,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding Path=StringProperty}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding Path=StringProperty}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -132,7 +134,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</ItemsControl> |
|
|
</ItemsControl> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<ItemsControl>("itemsControl"); |
|
|
var textBlock = window.GetControl<ItemsControl>("itemsControl"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -162,7 +164,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding StaticProperty}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding StaticProperty}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
textBlock.DataContext = new TestDataContext(); |
|
|
textBlock.DataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
Assert.Equal(TestDataContext.StaticProperty, textBlock.Text); |
|
|
Assert.Equal(TestDataContext.StaticProperty, textBlock.Text); |
|
|
@ -181,7 +183,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding StringProperty, DataType=local:TestDataContext}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding StringProperty, DataType=local:TestDataContext}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -206,7 +208,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding StringProperty, DataType={x:Type local:TestDataContext}}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding StringProperty, DataType={x:Type local:TestDataContext}}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -232,7 +234,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding TaskProperty^}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding TaskProperty^}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -258,7 +260,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding ObservableProperty^}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding ObservableProperty^}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
DelayedBinding.ApplyBindings(textBlock); |
|
|
DelayedBinding.ApplyBindings(textBlock); |
|
|
|
|
|
|
|
|
@ -289,7 +291,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding ListProperty[3]}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding ListProperty[3]}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -315,7 +317,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding ArrayProperty[3]}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding ArrayProperty[3]}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -341,7 +343,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding ObservableCollectionProperty[3]}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding ObservableCollectionProperty[3]}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -371,10 +373,10 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock DataContext='{CompiledBinding StringProperty}' Text='{CompiledBinding}' Name='textBlock' /> |
|
|
<TextBlock DataContext='{CompiledBinding StringProperty}' Text='{CompiledBinding}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
window.Presenter.ApplyTemplate(); |
|
|
window.Presenter!.ApplyTemplate(); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -400,7 +402,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding NonIntegerIndexerProperty[Test]}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding NonIntegerIndexerProperty[Test]}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -429,7 +431,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding NonIntegerIndexerInterfaceProperty[Test]}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding NonIntegerIndexerInterfaceProperty[Test]}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -463,7 +465,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Name='target' Content='{CompiledBinding StringProperty}' /> |
|
|
<ContentControl Name='target' Content='{CompiledBinding StringProperty}' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<ContentControl>("target"); |
|
|
var target = window.GetControl<ContentControl>("target"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -473,9 +475,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.Presenter.UpdateChild(); |
|
|
target.Presenter!.UpdateChild(); |
|
|
|
|
|
|
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text); |
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child!).Text); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -560,7 +562,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</ItemsControl> |
|
|
</ItemsControl> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<ItemsControl>("target"); |
|
|
var target = window.GetControl<ItemsControl>("target"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -570,9 +572,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.Presenter.ApplyTemplate(); |
|
|
target.Presenter!.ApplyTemplate(); |
|
|
|
|
|
|
|
|
Assert.Equal(dataContext.ListProperty[0], (string)((ContentPresenter)target.Presenter.Panel.Children[0]).Content); |
|
|
Assert.Equal(dataContext.ListProperty[0], (string?)((ContentPresenter)target.Presenter.Panel!.Children[0]).Content); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -598,8 +600,8 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</local:DataGridLikeControl.Columns> |
|
|
</local:DataGridLikeControl.Columns> |
|
|
</local:DataGridLikeControl> |
|
|
</local:DataGridLikeControl> |
|
|
</Window>");
|
|
|
</Window>");
|
|
|
var target = window.FindControl<DataGridLikeControl>("target"); |
|
|
var target = window.GetControl<DataGridLikeControl>("target"); |
|
|
var column = target!.Columns.Single(); |
|
|
var column = target.Columns.Single(); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -611,13 +613,13 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
|
|
|
|
|
|
// Assert DataGridLikeColumn.Binding data type.
|
|
|
// Assert DataGridLikeColumn.Binding data type.
|
|
|
var compiledPath = ((CompiledBindingExtension)column.Binding).Path; |
|
|
var compiledPath = ((CompiledBindingExtension)column.Binding!).Path; |
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
Assert.Equal(typeof(int), node.Property.PropertyType); |
|
|
Assert.Equal(typeof(int), node.Property.PropertyType); |
|
|
|
|
|
|
|
|
// Assert DataGridLikeColumn.Template data type by evaluating the template.
|
|
|
// Assert DataGridLikeColumn.Template data type by evaluating the template.
|
|
|
var firstItem = dataContext.ListProperty[0]; |
|
|
var firstItem = dataContext.ListProperty[0]; |
|
|
var textBlockFromTemplate = (TextBlock)column.Template.Build(firstItem); |
|
|
var textBlockFromTemplate = (TextBlock)column.Template!.Build(firstItem)!; |
|
|
textBlockFromTemplate.DataContext = firstItem; |
|
|
textBlockFromTemplate.DataContext = firstItem; |
|
|
Assert.Equal(firstItem.Length.ToString(), textBlockFromTemplate.Text); |
|
|
Assert.Equal(firstItem.Length.ToString(), textBlockFromTemplate.Text); |
|
|
} |
|
|
} |
|
|
@ -645,8 +647,8 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</local:DataGridLikeControl.Columns> |
|
|
</local:DataGridLikeControl.Columns> |
|
|
</local:DataGridLikeControl> |
|
|
</local:DataGridLikeControl> |
|
|
</Window>");
|
|
|
</Window>");
|
|
|
var target = window.FindControl<DataGridLikeControl>("target"); |
|
|
var target = window.GetControl<DataGridLikeControl>("target"); |
|
|
var column = target!.Columns.Single(); |
|
|
var column = target.Columns.Single(); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
dataContext.ListProperty.Add("Test"); |
|
|
dataContext.ListProperty.Add("Test"); |
|
|
@ -656,13 +658,13 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
|
|
|
|
|
|
// Assert DataGridLikeColumn.Binding data type.
|
|
|
// Assert DataGridLikeColumn.Binding data type.
|
|
|
var compiledPath = ((CompiledBindingExtension)column.Binding).Path; |
|
|
var compiledPath = ((CompiledBindingExtension)column.Binding!).Path; |
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
Assert.Equal(typeof(int), node.Property.PropertyType); |
|
|
Assert.Equal(typeof(int), node.Property.PropertyType); |
|
|
|
|
|
|
|
|
// Assert DataGridLikeColumn.Template data type by evaluating the template.
|
|
|
// Assert DataGridLikeColumn.Template data type by evaluating the template.
|
|
|
var firstItem = dataContext.ListProperty[0]; |
|
|
var firstItem = dataContext.ListProperty[0]; |
|
|
var textBlockFromTemplate = (TextBlock)column.Template.Build(firstItem); |
|
|
var textBlockFromTemplate = (TextBlock)column.Template!.Build(firstItem)!; |
|
|
textBlockFromTemplate.DataContext = firstItem; |
|
|
textBlockFromTemplate.DataContext = firstItem; |
|
|
Assert.Equal(firstItem.Length.ToString(), textBlockFromTemplate.Text); |
|
|
Assert.Equal(firstItem.Length.ToString(), textBlockFromTemplate.Text); |
|
|
} |
|
|
} |
|
|
@ -707,7 +709,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl x:DataType='local:TestDataContext' Name='target' Content='{CompiledBinding}' /> |
|
|
<ContentControl x:DataType='local:TestDataContext' Name='target' Content='{CompiledBinding}' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<ContentControl>("target"); |
|
|
var target = window.GetControl<ContentControl>("target"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -717,9 +719,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.Presenter.UpdateChild(); |
|
|
target.Presenter!.UpdateChild(); |
|
|
|
|
|
|
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text); |
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child!).Text); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -740,7 +742,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl x:DataType='local:TestDataContext' Name='target' Content='{CompiledBinding}' /> |
|
|
<ContentControl x:DataType='local:TestDataContext' Name='target' Content='{CompiledBinding}' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<ContentControl>("target"); |
|
|
var target = window.GetControl<ContentControl>("target"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -750,9 +752,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.Presenter.UpdateChild(); |
|
|
target.Presenter!.UpdateChild(); |
|
|
|
|
|
|
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text); |
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child!).Text); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -773,7 +775,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl x:DataType='local:TestDataContext' Name='target' Content='{CompiledBinding}' /> |
|
|
<ContentControl x:DataType='local:TestDataContext' Name='target' Content='{CompiledBinding}' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<ContentControl>("target"); |
|
|
var target = window.GetControl<ContentControl>("target"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -783,9 +785,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.Presenter.UpdateChild(); |
|
|
target.Presenter!.UpdateChild(); |
|
|
|
|
|
|
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text); |
|
|
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child!).Text); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -805,7 +807,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</StackPanel> |
|
|
</StackPanel> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("text2"); |
|
|
var textBlock = window.GetControl<TextBlock>("text2"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -834,7 +836,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</StackPanel> |
|
|
</StackPanel> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("text2"); |
|
|
var textBlock = window.GetControl<TextBlock>("text2"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -861,10 +863,10 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding Title, RelativeSource={RelativeSource AncestorType=Window}}' x:Name='text'/> |
|
|
<TextBlock Text='{CompiledBinding Title, RelativeSource={RelativeSource AncestorType=Window}}' x:Name='text'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<TextBlock>("text"); |
|
|
var target = window.GetControl<TextBlock>("text"); |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
window.Presenter.ApplyTemplate(); |
|
|
window.Presenter!.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
|
|
|
|
|
|
Assert.Equal("test", target.Text); |
|
|
Assert.Equal("test", target.Text); |
|
|
@ -885,10 +887,10 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding Title, RelativeSource={RelativeSource AncestorType={x:Type Window}}}' x:Name='text'/> |
|
|
<TextBlock Text='{CompiledBinding Title, RelativeSource={RelativeSource AncestorType={x:Type Window}}}' x:Name='text'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<TextBlock>("text"); |
|
|
var target = window.GetControl<TextBlock>("text"); |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
window.Presenter.ApplyTemplate(); |
|
|
window.Presenter!.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
|
|
|
|
|
|
Assert.Equal("test", target.Text); |
|
|
Assert.Equal("test", target.Text); |
|
|
@ -1003,10 +1005,10 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding Length, Source=Test}' x:Name='text'/> |
|
|
<TextBlock Text='{CompiledBinding Length, Source=Test}' x:Name='text'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var target = window.FindControl<TextBlock>("text"); |
|
|
var target = window.GetControl<TextBlock>("text"); |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
window.Presenter.ApplyTemplate(); |
|
|
window.Presenter!.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
target.ApplyTemplate(); |
|
|
|
|
|
|
|
|
Assert.Equal("Test".Length.ToString(), target.Text); |
|
|
Assert.Equal("Test".Length.ToString(), target.Text); |
|
|
@ -1030,7 +1032,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
|
|
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
} |
|
|
} |
|
|
@ -1054,7 +1056,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
|
|
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
} |
|
|
} |
|
|
@ -1079,7 +1081,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
|
|
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
} |
|
|
} |
|
|
@ -1105,7 +1107,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
|
|
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
Assert.Equal("foobar", textBlock.Text); |
|
|
} |
|
|
} |
|
|
@ -1125,7 +1127,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
|
|
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
Assert.Equal(Brushes.Red.Color, contentControl.Content); |
|
|
Assert.Equal(Brushes.Red.Color, contentControl.Content); |
|
|
} |
|
|
} |
|
|
@ -1145,7 +1147,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{Binding StringProperty}' Name='textBlock' /> |
|
|
<TextBlock Text='{Binding StringProperty}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1188,7 +1190,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Content='{CompiledBinding $parent.Title}' Name='contentControl' /> |
|
|
<ContentControl Content='{CompiledBinding $parent.Title}' Name='contentControl' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
Assert.Equal("foo", contentControl.Content); |
|
|
Assert.Equal("foo", contentControl.Content); |
|
|
} |
|
|
} |
|
|
@ -1208,7 +1210,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
|
|
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
window.DataContext = new TestDataContext() { StringProperty = "Foo" }; |
|
|
window.DataContext = new TestDataContext() { StringProperty = "Foo" }; |
|
|
|
|
|
|
|
|
@ -1230,7 +1232,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
|
|
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
window.DataContext = new TestDataContext() { StringProperty = "Foo" }; |
|
|
window.DataContext = new TestDataContext() { StringProperty = "Foo" }; |
|
|
|
|
|
|
|
|
@ -1267,7 +1269,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext)}' Name='contentControl' /> |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext)}' Name='contentControl' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
|
|
|
|
|
|
@ -1290,7 +1292,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext)}' Name='contentControl' /> |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext)}' Name='contentControl' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
var dataContext = "foo"; |
|
|
var dataContext = "foo"; |
|
|
|
|
|
|
|
|
@ -1313,7 +1315,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext).StringProperty}' Name='contentControl' /> |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext).StringProperty}' Name='contentControl' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1339,7 +1341,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Content='{CompiledBinding $parent.DataContext(local:TestDataContext).StringProperty}' Name='contentControl' /> |
|
|
<ContentControl Content='{CompiledBinding $parent.DataContext(local:TestDataContext).StringProperty}' Name='contentControl' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1365,7 +1367,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Content='{CompiledBinding ((local:TestData)ObjectsArrayProperty[0]).StringProperty}' Name='contentControl' /> |
|
|
<ContentControl Content='{CompiledBinding ((local:TestData)ObjectsArrayProperty[0]).StringProperty}' Name='contentControl' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
var data = new TestData() |
|
|
var data = new TestData() |
|
|
{ |
|
|
{ |
|
|
@ -1395,7 +1397,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext).StringProperty}' Name='contentControl' /> |
|
|
<ContentControl Content='{CompiledBinding $parent.((local:TestDataContext)DataContext).StringProperty}' Name='contentControl' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var contentControl = window.FindControl<ContentControl>("contentControl"); |
|
|
var contentControl = window.GetControl<ContentControl>("contentControl"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1425,7 +1427,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1451,7 +1453,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding StringFormat=bar-\{0\}}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding StringFormat=bar-\{0\}}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1477,7 +1479,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding .}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding .}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1503,7 +1505,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Text='{CompiledBinding Path=., StringFormat=bar-\{0\}}' Name='textBlock' /> |
|
|
<TextBlock Text='{CompiledBinding Path=., StringFormat=bar-\{0\}}' Name='textBlock' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext |
|
|
var dataContext = new TestDataContext |
|
|
{ |
|
|
{ |
|
|
@ -1550,10 +1552,10 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Name='textBlock' Text='{CompiledBinding $self.Name}' /> |
|
|
<TextBlock Name='textBlock' Text='{CompiledBinding $self.Name}' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
window.Presenter.ApplyTemplate(); |
|
|
window.Presenter!.ApplyTemplate(); |
|
|
|
|
|
|
|
|
Assert.Equal(textBlock.Name, textBlock.Text); |
|
|
Assert.Equal(textBlock.Name, textBlock.Text); |
|
|
} |
|
|
} |
|
|
@ -1577,10 +1579,10 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<Button Name='button' /> |
|
|
<Button Name='button' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var button = window.FindControl<Button>("button"); |
|
|
var button = window.GetControl<Button>("button"); |
|
|
|
|
|
|
|
|
window.ApplyTemplate(); |
|
|
window.ApplyTemplate(); |
|
|
window.Presenter.ApplyTemplate(); |
|
|
window.Presenter!.ApplyTemplate(); |
|
|
|
|
|
|
|
|
Assert.True(button.IsVisible); |
|
|
Assert.True(button.IsVisible); |
|
|
|
|
|
|
|
|
@ -1612,12 +1614,12 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
window.DataContext = new MethodDataContext(); |
|
|
window.DataContext = new MethodDataContext(); |
|
|
|
|
|
|
|
|
Assert.IsAssignableFrom(typeof(Action), window.FindControl<ContentControl>("action").Content); |
|
|
Assert.IsAssignableFrom(typeof(Action), window.GetControl<ContentControl>("action").Content); |
|
|
Assert.IsAssignableFrom(typeof(Func<int>), window.FindControl<ContentControl>("func").Content); |
|
|
Assert.IsAssignableFrom(typeof(Func<int>), window.GetControl<ContentControl>("func").Content); |
|
|
Assert.IsAssignableFrom(typeof(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), window.FindControl<ContentControl>("action16").Content); |
|
|
Assert.IsAssignableFrom(typeof(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), window.GetControl<ContentControl>("action16").Content); |
|
|
Assert.IsAssignableFrom(typeof(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), window.FindControl<ContentControl>("func16").Content); |
|
|
Assert.IsAssignableFrom(typeof(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), window.GetControl<ContentControl>("func16").Content); |
|
|
Assert.True(typeof(Delegate).IsAssignableFrom(window.FindControl<ContentControl>("customvoid").Content.GetType())); |
|
|
Assert.True(typeof(Delegate).IsAssignableFrom(window.GetControl<ContentControl>("customvoid").Content!.GetType())); |
|
|
Assert.True(typeof(Delegate).IsAssignableFrom(window.FindControl<ContentControl>("customint").Content.GetType())); |
|
|
Assert.True(typeof(Delegate).IsAssignableFrom(window.GetControl<ContentControl>("customint").Content!.GetType())); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -1634,7 +1636,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<Button Name='button' Command='{CompiledBinding Method}'/> |
|
|
<Button Name='button' Command='{CompiledBinding Method}'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var button = window.FindControl<Button>("button"); |
|
|
var button = window.GetControl<Button>("button"); |
|
|
var vm = new MethodAsCommandDataContext(); |
|
|
var vm = new MethodAsCommandDataContext(); |
|
|
|
|
|
|
|
|
button.DataContext = vm; |
|
|
button.DataContext = vm; |
|
|
@ -1659,7 +1661,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<Button Name='button' Command='{CompiledBinding Method1}' CommandParameter='5'/> |
|
|
<Button Name='button' Command='{CompiledBinding Method1}' CommandParameter='5'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var button = window.FindControl<Button>("button"); |
|
|
var button = window.GetControl<Button>("button"); |
|
|
var vm = new MethodAsCommandDataContext(); |
|
|
var vm = new MethodAsCommandDataContext(); |
|
|
|
|
|
|
|
|
button.DataContext = vm; |
|
|
button.DataContext = vm; |
|
|
@ -1684,7 +1686,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Name='textBlock' Text='{CompiledBinding Method}'/> |
|
|
<TextBlock Name='textBlock' Text='{CompiledBinding Method}'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
var vm = new MethodAsCommandDataContext(); |
|
|
var vm = new MethodAsCommandDataContext(); |
|
|
|
|
|
|
|
|
textBlock.DataContext = vm; |
|
|
textBlock.DataContext = vm; |
|
|
@ -1710,7 +1712,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<Button Name='button' Command='{CompiledBinding Do}' CommandParameter='{CompiledBinding Parameter, Mode=OneTime}'/> |
|
|
<Button Name='button' Command='{CompiledBinding Do}' CommandParameter='{CompiledBinding Parameter, Mode=OneTime}'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var button = window.FindControl<Button>("button"); |
|
|
var button = window.GetControl<Button>("button"); |
|
|
var vm = new MethodAsCommandDataContext() |
|
|
var vm = new MethodAsCommandDataContext() |
|
|
{ |
|
|
{ |
|
|
Parameter = commandParameter |
|
|
Parameter = commandParameter |
|
|
@ -1738,7 +1740,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<Button Name='button' Command='{CompiledBinding Do}'/> |
|
|
<Button Name='button' Command='{CompiledBinding Do}'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var button = window.FindControl<Button>("button"); |
|
|
var button = window.GetControl<Button>("button"); |
|
|
var vm = new MethodAsCommandDataContext() |
|
|
var vm = new MethodAsCommandDataContext() |
|
|
{ |
|
|
{ |
|
|
Parameter = null, |
|
|
Parameter = null, |
|
|
@ -1770,7 +1772,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
x:DataType='local:TestDataContext' |
|
|
x:DataType='local:TestDataContext' |
|
|
X='{CompiledBinding StringProperty}' />";
|
|
|
X='{CompiledBinding StringProperty}' />";
|
|
|
var control = (AssignBindingControl)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var control = (AssignBindingControl)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var compiledPath = ((CompiledBindingExtension)control.X).Path; |
|
|
var compiledPath = ((CompiledBindingExtension)control.X!).Path; |
|
|
|
|
|
|
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
Assert.Equal(typeof(string), node.Property.PropertyType); |
|
|
Assert.Equal(typeof(string), node.Property.PropertyType); |
|
|
@ -1788,7 +1790,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.MarkupExtensions;assembly=Avalonia.Markup.Xaml.UnitTests' |
|
|
xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.MarkupExtensions;assembly=Avalonia.Markup.Xaml.UnitTests' |
|
|
X='{CompiledBinding StringProperty, DataType=local:TestDataContext}' />";
|
|
|
X='{CompiledBinding StringProperty, DataType=local:TestDataContext}' />";
|
|
|
var control = (AssignBindingControl)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var control = (AssignBindingControl)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var compiledPath = ((CompiledBindingExtension)control.X).Path; |
|
|
var compiledPath = ((CompiledBindingExtension)control.X!).Path; |
|
|
|
|
|
|
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
Assert.Equal(typeof(string), node.Property.PropertyType); |
|
|
Assert.Equal(typeof(string), node.Property.PropertyType); |
|
|
@ -1807,7 +1809,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
X='{CompiledBinding StringProperty, DataType=local:TestDataContext}' />";
|
|
|
X='{CompiledBinding StringProperty, DataType=local:TestDataContext}' />";
|
|
|
var control = (AssignBindingControl)AvaloniaRuntimeXamlLoader.Load(new RuntimeXamlLoaderDocument(xaml), |
|
|
var control = (AssignBindingControl)AvaloniaRuntimeXamlLoader.Load(new RuntimeXamlLoaderDocument(xaml), |
|
|
new RuntimeXamlLoaderConfiguration { UseCompiledBindingsByDefault = true }); |
|
|
new RuntimeXamlLoaderConfiguration { UseCompiledBindingsByDefault = true }); |
|
|
var compiledPath = ((CompiledBindingExtension)control.X).Path; |
|
|
var compiledPath = ((CompiledBindingExtension)control.X!).Path; |
|
|
|
|
|
|
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
var node = Assert.IsType<PropertyElement>(Assert.Single(compiledPath.Elements)); |
|
|
Assert.Equal(typeof(string), node.Property.PropertyType); |
|
|
Assert.Equal(typeof(string), node.Property.PropertyType); |
|
|
@ -1830,7 +1832,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<ComboBox x:Name='comboBox' ItemsSource='{Binding GenericProperty}' SelectedItem='{Binding GenericProperty.CurrentItem}' /> |
|
|
<ComboBox x:Name='comboBox' ItemsSource='{Binding GenericProperty}' SelectedItem='{Binding GenericProperty.CurrentItem}' /> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var comboBox = window.FindControl<ComboBox>("comboBox"); |
|
|
var comboBox = window.GetControl<ComboBox>("comboBox"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
dataContext.GenericProperty.Add(123); |
|
|
dataContext.GenericProperty.Add(123); |
|
|
@ -1857,7 +1859,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
<TextBlock Name='textBlock' Text='{{Binding DecimalValue, StringFormat=c2}}'/> |
|
|
<TextBlock Name='textBlock' Text='{{Binding DecimalValue, StringFormat=c2}}'/> |
|
|
</Window>";
|
|
|
</Window>";
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
var textBlock = window.FindControl<TextBlock>("textBlock"); |
|
|
var textBlock = window.GetControl<TextBlock>("textBlock"); |
|
|
|
|
|
|
|
|
var dataContext = new TestDataContext(); |
|
|
var dataContext = new TestDataContext(); |
|
|
window.DataContext = dataContext; |
|
|
window.DataContext = dataContext; |
|
|
@ -1887,7 +1889,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
public interface IHasProperty |
|
|
public interface IHasProperty |
|
|
{ |
|
|
{ |
|
|
string StringProperty { get; set; } |
|
|
string? StringProperty { get; set; } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public interface IHasPropertyDerived : IHasProperty |
|
|
public interface IHasPropertyDerived : IHasProperty |
|
|
@ -1902,34 +1904,34 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
{ |
|
|
{ |
|
|
public static IValueConverter Instance { get; } = new AppendConverter(); |
|
|
public static IValueConverter Instance { get; } = new AppendConverter(); |
|
|
|
|
|
|
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |
|
|
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) |
|
|
=> string.Format("{0}+{1}+{2}", value, parameter, culture); |
|
|
=> string.Format("{0}+{1}+{2}", value, parameter, culture); |
|
|
|
|
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) |
|
|
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) |
|
|
=> throw new NotImplementedException(); |
|
|
=> throw new NotImplementedException(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public class TestData |
|
|
public class TestData |
|
|
{ |
|
|
{ |
|
|
public string StringProperty { get; set; } |
|
|
public string? StringProperty { get; set; } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public class TestDataContextBaseClass {} |
|
|
public class TestDataContextBaseClass {} |
|
|
|
|
|
|
|
|
public class TestDataContext : TestDataContextBaseClass, IHasPropertyDerived, IHasExplicitProperty |
|
|
public class TestDataContext : TestDataContextBaseClass, IHasPropertyDerived, IHasExplicitProperty |
|
|
{ |
|
|
{ |
|
|
public string StringProperty { get; set; } |
|
|
public string? StringProperty { get; set; } |
|
|
|
|
|
|
|
|
public Task<string> TaskProperty { get; set; } |
|
|
public Task<string>? TaskProperty { get; set; } |
|
|
|
|
|
|
|
|
public IObservable<string> ObservableProperty { get; set; } |
|
|
public IObservable<string>? ObservableProperty { get; set; } |
|
|
|
|
|
|
|
|
public ObservableCollection<string> ObservableCollectionProperty { get; set; } = new ObservableCollection<string>(); |
|
|
public ObservableCollection<string> ObservableCollectionProperty { get; set; } = new ObservableCollection<string>(); |
|
|
|
|
|
|
|
|
public string[] ArrayProperty { get; set; } |
|
|
public string[]? ArrayProperty { get; set; } |
|
|
|
|
|
|
|
|
public object[] ObjectsArrayProperty { get; set; } |
|
|
public object[]? ObjectsArrayProperty { get; set; } |
|
|
|
|
|
|
|
|
public List<string> ListProperty { get; set; } = new List<string>(); |
|
|
public List<string> ListProperty { get; set; } = new List<string>(); |
|
|
|
|
|
|
|
|
@ -1966,7 +1968,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
public class ListItemCollectionView<T> : List<T> |
|
|
public class ListItemCollectionView<T> : List<T> |
|
|
{ |
|
|
{ |
|
|
public T CurrentItem { get; set; } |
|
|
public T? CurrentItem { get; set; } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public class MethodDataContext |
|
|
public class MethodDataContext |
|
|
@ -1983,15 +1985,16 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
|
public class MethodAsCommandDataContext : INotifyPropertyChanged |
|
|
public class MethodAsCommandDataContext : INotifyPropertyChanged |
|
|
{ |
|
|
{ |
|
|
public event PropertyChangedEventHandler PropertyChanged; |
|
|
public event PropertyChangedEventHandler? PropertyChanged; |
|
|
|
|
|
|
|
|
public string Method() => Value = "Called"; |
|
|
public string Method() => Value = "Called"; |
|
|
public string Method1(int i) => Value = $"Called {i}"; |
|
|
public string Method1(int i) => Value = $"Called {i}"; |
|
|
public string Method2(int i, int j) => Value = $"Called {i},{j}"; |
|
|
public string Method2(int i, int j) => Value = $"Called {i},{j}"; |
|
|
public string Value { get; private set; } = "Not called"; |
|
|
public string Value { get; private set; } = "Not called"; |
|
|
|
|
|
|
|
|
object _parameter; |
|
|
private object? _parameter; |
|
|
public object Parameter |
|
|
|
|
|
|
|
|
public object? Parameter |
|
|
{ |
|
|
{ |
|
|
get => _parameter; |
|
|
get => _parameter; |
|
|
set |
|
|
set |
|
|
@ -2010,7 +2013,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
Value = $"Do {parameter}"; |
|
|
Value = $"Do {parameter}"; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
[Metadata.DependsOn(nameof(Parameter))] |
|
|
[DependsOn(nameof(Parameter))] |
|
|
public bool CanDo(object parameter) |
|
|
public bool CanDo(object parameter) |
|
|
{ |
|
|
{ |
|
|
return ReferenceEquals(null, Parameter) == false; |
|
|
return ReferenceEquals(null, Parameter) == false; |
|
|
@ -2020,22 +2023,22 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
public class CustomDataTemplate : IDataTemplate |
|
|
public class CustomDataTemplate : IDataTemplate |
|
|
{ |
|
|
{ |
|
|
[DataType] |
|
|
[DataType] |
|
|
public Type FancyDataType { get; set; } |
|
|
public Type? FancyDataType { get; set; } |
|
|
|
|
|
|
|
|
[Content] |
|
|
[Content] |
|
|
[TemplateContent] |
|
|
[TemplateContent] |
|
|
public object Content { get; set; } |
|
|
public object? Content { get; set; } |
|
|
|
|
|
|
|
|
public bool Match(object data) => FancyDataType?.IsInstanceOfType(data) ?? true; |
|
|
public bool Match(object? data) => FancyDataType?.IsInstanceOfType(data) ?? true; |
|
|
|
|
|
|
|
|
public Control Build(object data) => TemplateContent.Load(Content)?.Result; |
|
|
public Control? Build(object? data) => TemplateContent.Load(Content)?.Result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public class CustomDataTemplateInherit : CustomDataTemplate { } |
|
|
public class CustomDataTemplateInherit : CustomDataTemplate { } |
|
|
|
|
|
|
|
|
public class AssignBindingControl : Control |
|
|
public class AssignBindingControl : Control |
|
|
{ |
|
|
{ |
|
|
[AssignBinding] public IBinding X { get; set; } |
|
|
[AssignBinding] public IBinding? X { get; set; } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public class DataGridLikeControl : Control |
|
|
public class DataGridLikeControl : Control |
|
|
@ -2046,8 +2049,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
x => x.Items, |
|
|
x => x.Items, |
|
|
(x, v) => x.Items = v); |
|
|
(x, v) => x.Items = v); |
|
|
|
|
|
|
|
|
private IEnumerable _items; |
|
|
private IEnumerable? _items; |
|
|
public IEnumerable Items |
|
|
|
|
|
|
|
|
public IEnumerable? Items |
|
|
{ |
|
|
{ |
|
|
get => _items; |
|
|
get => _items; |
|
|
set => SetAndRaise(ItemsProperty, ref _items, value); |
|
|
set => SetAndRaise(ItemsProperty, ref _items, value); |
|
|
@ -2060,9 +2064,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
{ |
|
|
{ |
|
|
[AssignBinding] |
|
|
[AssignBinding] |
|
|
[InheritDataTypeFromItems(nameof(DataGridLikeControl.Items), AncestorType = typeof(DataGridLikeControl))] |
|
|
[InheritDataTypeFromItems(nameof(DataGridLikeControl.Items), AncestorType = typeof(DataGridLikeControl))] |
|
|
public IBinding Binding { get; set; } |
|
|
public IBinding? Binding { get; set; } |
|
|
|
|
|
|
|
|
[InheritDataTypeFromItems(nameof(DataGridLikeControl.Items), AncestorType = typeof(DataGridLikeControl))] |
|
|
[InheritDataTypeFromItems(nameof(DataGridLikeControl.Items), AncestorType = typeof(DataGridLikeControl))] |
|
|
public IDataTemplate Template { get; set; } |
|
|
public IDataTemplate? Template { get; set; } |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|