Navigation in Avalonia

This commit is contained in:
Daniel Clark
2022-12-05 19:39:13 +00:00
parent 855a4b98d2
commit 358926a5d4
17 changed files with 1660 additions and 59 deletions
@@ -0,0 +1,42 @@
using Avalonia.Controls;
using Avalonia;
using Avalonia.Data;
using Avalonia.Markup.Xaml;
namespace Toolkit.Foundation.Avalonia
{
public class ParameterBindingExtension : MarkupExtension, IParameter
{
private static readonly AttachedProperty<object> ValueProperty =
AvaloniaProperty.RegisterAttached<ParameterBindingExtension, Control, object>("Value");
private readonly Binding? valueBinding;
public ParameterBindingExtension(string key, object value)
{
Key = key;
valueBinding = value.ToBinding();
}
public string? Key { get; }
public KeyValuePair<string, object>? GetValue(object target)
{
if (target is AvaloniaObject avaloniaObject)
{
if (valueBinding is not null)
{
avaloniaObject.Bind(ValueProperty, valueBinding);
return new KeyValuePair<string, object>(Key, (dynamic)avaloniaObject.GetValue(ValueProperty));
}
}
return default;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
}