Improved NavigationViewExtension

This commit is contained in:
TheXamlGuy
2024-10-01 20:18:17 +01:00
parent 5a5d3f80a9
commit 060bb93b62
3 changed files with 9 additions and 22 deletions
@@ -4,8 +4,7 @@ namespace Toolkit.Foundation;
public partial class ComponentConfigurationViewModel<TConfiguration, TValue, THeader, TDescription, TAction> :
ValueViewModel<TValue>,
IComponentConfigurationViewModel,
INotificationHandler<ChangedEventArgs<TConfiguration>>
IComponentConfigurationViewModel
where TConfiguration : class
{
public ComponentConfigurationViewModel(IServiceProvider provider,
@@ -19,11 +18,6 @@ public partial class ComponentConfigurationViewModel<TConfiguration, TValue, THe
TAction action) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
}
public Task Handle(ChangedEventArgs<TConfiguration> args)
{
throw new NotImplementedException();
}
}
public partial class ComponentConfigurationViewModel<TConfiguration, TValue, TAction>(IServiceProvider provider,
+3 -8
View File
@@ -8,16 +8,11 @@ public class NamedTypeConverter :
MarkupExtension,
IValueConverter
{
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
var d = value is not null ? value.GetType().Name : (object?)null;
return d;
}
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) =>
value is not null ? value.GetType().Name : (object?)null;
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();
}
public override object ProvideValue(IServiceProvider serviceProvider) => this;
}
@@ -27,15 +27,14 @@ public class NavigationViewExtension
{
if (sender.GetLogicalAncestors().OfType<NavigationView>().FirstOrDefault() is NavigationView navigationView)
{
void OnItemInvoked(object? _, FluentAvalonia.UI.Controls.NavigationViewItemInvokedEventArgs args)
sender.GetObservable(NavigationViewItem.IsSelectedProperty).Subscribe(args =>
{
if (args.InvokedItemContainer == sender)
if (args)
{
sender.RaiseEvent(new ItemInvokedEventArgs { RoutedEvent = ItemInvokedEvent });
}
}
});
navigationView.ItemInvoked += OnItemInvoked;
return true;
}
@@ -44,13 +43,12 @@ public class NavigationViewExtension
if (!TrySetupNavigationView())
{
void OnAttachedToVisualTree(object? _, VisualTreeAttachmentEventArgs __)
void HandleLoaded(object? _, RoutedEventArgs __)
{
sender.AttachedToVisualTree -= OnAttachedToVisualTree;
TrySetupNavigationView();
}
sender.AttachedToVisualTree += OnAttachedToVisualTree;
sender.Loaded += HandleLoaded;
}
}