Add Content lookup markupextension
This commit is contained in:
@@ -6,7 +6,6 @@ using Mediator;
|
||||
using Toolkit.Framework.Foundation;
|
||||
|
||||
namespace Toolkit.Framework.Avalonia;
|
||||
|
||||
public class NavigateExtension : TriggerExtension
|
||||
{
|
||||
private static readonly AttachedProperty<IMediator> MediatorProperty =
|
||||
@@ -412,74 +411,71 @@ public class NavigateExtension : TriggerExtension
|
||||
|
||||
protected override void OnInvoked(object sender, EventArgs args)
|
||||
{
|
||||
if (TargetObject is not null)
|
||||
if (TargetObject is not null && mediatorBinding is not null)
|
||||
{
|
||||
if (mediatorBinding is not null)
|
||||
TargetObject.Bind(MediatorProperty, mediatorBinding);
|
||||
if (TargetObject.GetValue(MediatorProperty) is IMediator mediator)
|
||||
{
|
||||
TargetObject.Bind(MediatorProperty, mediatorBinding);
|
||||
if (TargetObject.GetValue(MediatorProperty) is IMediator mediator)
|
||||
if (toBinding is not null)
|
||||
{
|
||||
if (toBinding is not null)
|
||||
TargetObject.Bind(ToProperty, toBinding);
|
||||
if (TargetObject.GetValue(ToProperty) is { } to)
|
||||
{
|
||||
TargetObject.Bind(ToProperty, toBinding);
|
||||
if (TargetObject.GetValue(ToProperty) is { } to)
|
||||
List<object>? parameters = new();
|
||||
foreach (object? parameter in this.parameters)
|
||||
{
|
||||
List<object>? parameters = new();
|
||||
foreach (object? parameter in this.parameters)
|
||||
if (parameter is not null)
|
||||
{
|
||||
if (parameter is not null)
|
||||
switch (parameter)
|
||||
{
|
||||
switch (parameter)
|
||||
{
|
||||
case IParameter keyedParameter:
|
||||
if (keyedParameter.GetValue(TargetObject) is KeyValuePair<string, object> keyValuePair)
|
||||
{
|
||||
parameters.Add(keyValuePair);
|
||||
}
|
||||
break;
|
||||
case IParameter keyedParameter:
|
||||
if (keyedParameter.GetValue(TargetObject) is KeyValuePair<string, object> keyValuePair)
|
||||
{
|
||||
parameters.Add(keyValuePair);
|
||||
}
|
||||
break;
|
||||
|
||||
case IEventParameter eventParameter:
|
||||
parameters.AddRange(eventParameter.GetValues(args));
|
||||
break;
|
||||
case IEventParameter eventParameter:
|
||||
parameters.AddRange(eventParameter.GetValues(args));
|
||||
break;
|
||||
|
||||
default:
|
||||
if (parameter.ToBinding() is Binding defaultDinding)
|
||||
{
|
||||
TargetObject.Bind(ParameterProperty, defaultDinding);
|
||||
parameters.Add((dynamic)TargetObject.GetValue(ParameterProperty));
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (parameter.ToBinding() is Binding defaultDinding)
|
||||
{
|
||||
TargetObject.Bind(ParameterProperty, defaultDinding);
|
||||
parameters.Add((dynamic)TargetObject.GetValue(ParameterProperty));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object? route = null;
|
||||
if (routeBinding is not null)
|
||||
object? route = null;
|
||||
if (routeBinding is not null)
|
||||
{
|
||||
TargetObject.Bind(RouteProperty, routeBinding);
|
||||
route = TargetObject.GetValue(RouteProperty);
|
||||
}
|
||||
|
||||
if (to is string name)
|
||||
{
|
||||
if (toBinding?.StringFormat is string format)
|
||||
{
|
||||
TargetObject.Bind(RouteProperty, routeBinding);
|
||||
route = TargetObject.GetValue(RouteProperty);
|
||||
name = string.Format(format, name);
|
||||
}
|
||||
|
||||
if (to is string name)
|
||||
{
|
||||
if (toBinding?.StringFormat is string format)
|
||||
{
|
||||
name = string.Format(format, name);
|
||||
}
|
||||
mediator.Send(new Navigate(name, parameters.ToArray()) { Route = route });
|
||||
}
|
||||
|
||||
mediator.Send(new Navigate(name, parameters.ToArray()) { Route = route });
|
||||
}
|
||||
|
||||
if (to is Type type)
|
||||
{
|
||||
mediator.Send(new Navigate(type, parameters.ToArray()) { Route = route });
|
||||
}
|
||||
if (to is Type type)
|
||||
{
|
||||
mediator.Send(new Navigate(type, parameters.ToArray()) { Route = route });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
base.OnInvoked(sender, args);
|
||||
}
|
||||
|
||||
base.OnInvoked(sender, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user