|
|
|
@ -1863,8 +1863,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
<StackPanel> |
|
|
|
<ContentControl Content='{CompiledBinding Action}' Name='action' /> |
|
|
|
<ContentControl Content='{CompiledBinding Func}' Name='func' /> |
|
|
|
<ContentControl Content='{CompiledBinding Action16}' Name='action16' /> |
|
|
|
<ContentControl Content='{CompiledBinding Func16}' Name='func16' /> |
|
|
|
<ContentControl Content='{CompiledBinding Func2}' Name='func2' /> |
|
|
|
<ContentControl Content='{CompiledBinding CustomDelegateTypeVoid}' Name='customvoid' /> |
|
|
|
<ContentControl Content='{CompiledBinding CustomDelegateTypeInt}' Name='customint' /> |
|
|
|
</StackPanel> |
|
|
|
@ -1873,9 +1872,8 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
window.DataContext = new MethodDataContext(); |
|
|
|
|
|
|
|
Assert.IsAssignableFrom(typeof(Action), window.GetControl<ContentControl>("action").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.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.GetControl<ContentControl>("func16").Content); |
|
|
|
Assert.IsAssignableFrom(typeof(Func<object>), window.GetControl<ContentControl>("func").Content); |
|
|
|
Assert.IsAssignableFrom(typeof(Func<object, object>), window.GetControl<ContentControl>("func2").Content); |
|
|
|
Assert.True(typeof(Delegate).IsAssignableFrom(window.GetControl<ContentControl>("customvoid").Content!.GetType())); |
|
|
|
Assert.True(typeof(Delegate).IsAssignableFrom(window.GetControl<ContentControl>("customint").Content!.GetType())); |
|
|
|
} |
|
|
|
@ -1906,17 +1904,20 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Binding_Method_With_Parameter_To_Command_Works() |
|
|
|
[Theory] |
|
|
|
[InlineData("5")] |
|
|
|
[InlineData("hello")] |
|
|
|
[InlineData(null)] |
|
|
|
public void Binding_Method_With_Parameter_To_Command_Works(string? parameter) |
|
|
|
{ |
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
{ |
|
|
|
var xaml = @"
|
|
|
|
var xaml = $@"
|
|
|
|
<Window xmlns='https://github.com/avaloniaui'
|
|
|
|
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
|
|
|
|
xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.MarkupExtensions;assembly=Avalonia.Markup.Xaml.UnitTests' |
|
|
|
x:DataType='local:MethodAsCommandDataContext'> |
|
|
|
<Button Name='button' Command='{CompiledBinding Method1}' CommandParameter='5'/> |
|
|
|
<Button Name='button' Command='{{CompiledBinding Method1}}' CommandParameter='{ parameter ?? "{x:Null}" }'/> |
|
|
|
</Window>";
|
|
|
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
|
|
|
var button = window.GetControl<Button>("button"); |
|
|
|
@ -1927,7 +1928,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
|
|
|
|
Assert.NotNull(button.Command); |
|
|
|
PerformClick(button); |
|
|
|
Assert.Equal("Called 5", vm.Value); |
|
|
|
Assert.Equal("Called " + parameter, vm.Value); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -2533,12 +2534,11 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
{ |
|
|
|
public void Action() { } |
|
|
|
|
|
|
|
public int Func() => 1; |
|
|
|
public object Func() => 1; |
|
|
|
public object Func2(object i) => i; |
|
|
|
|
|
|
|
public void Action16(int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) { } |
|
|
|
public int Func16(int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) => i; |
|
|
|
public void CustomDelegateTypeVoid(int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) { } |
|
|
|
public int CustomDelegateTypeInt(int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) => i; |
|
|
|
public void CustomDelegateTypeVoid(object i) { } |
|
|
|
public object CustomDelegateTypeInt(object i) => i; |
|
|
|
} |
|
|
|
|
|
|
|
public class MethodAsCommandDataContext : INotifyPropertyChanged |
|
|
|
@ -2546,7 +2546,9 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
|
public event PropertyChangedEventHandler? PropertyChanged; |
|
|
|
|
|
|
|
public string Method() => Value = "Called"; |
|
|
|
public string Method1(int i) => Value = $"Called {i}"; |
|
|
|
public string Method1() => Value = "Called"; |
|
|
|
public string Method1(int i) => throw new InvalidOperationException("Binding to method with typed parameters is not supported"); |
|
|
|
public string Method1(object i) => Value = $"Called {i}"; |
|
|
|
public string Method2(int i, int j) => Value = $"Called {i},{j}"; |
|
|
|
public string Value { get; private set; } = "Not called"; |
|
|
|
|
|
|
|
|