Files
Wino-Mail/Wino.Mail/Behaviors/CreateMailNavigationItemBehavior.cs

86 lines
2.6 KiB
C#
Raw Normal View History

2024-04-18 01:44:37 +02:00
using System.Collections.ObjectModel;
using Microsoft.Xaml.Interactivity;
using Windows.UI.Xaml;
using Wino.Core.Domain.Interfaces;
using Wino.Core.UWP.Controls;
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
namespace Wino.Behaviors;
public class CreateMailNavigationItemBehavior : Behavior<WinoNavigationViewItem>
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
public IMenuItem SelectedMenuItem
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
get { return (IMenuItem)GetValue(SelectedMenuItemProperty); }
set { SetValue(SelectedMenuItemProperty, value); }
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public ObservableCollection<IMenuItem> MenuItems
{
get { return (ObservableCollection<IMenuItem>)GetValue(MenuItemsProperty); }
set { SetValue(MenuItemsProperty, value); }
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public static readonly DependencyProperty MenuItemsProperty = DependencyProperty.Register(nameof(MenuItems), typeof(ObservableCollection<IMenuItem>), typeof(CreateMailNavigationItemBehavior), new PropertyMetadata(null, OnMenuItemsChanged));
public static readonly DependencyProperty SelectedMenuItemProperty = DependencyProperty.Register(nameof(SelectedMenuItem), typeof(IMenuItem), typeof(CreateMailNavigationItemBehavior), new PropertyMetadata(null, OnSelectedMenuItemChanged));
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public CreateMailNavigationItemBehavior()
{
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
protected override void OnAttached()
{
base.OnAttached();
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
protected override void OnDetaching()
{
base.OnDetaching();
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
private static void OnMenuItemsChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
if (dependencyObject is CreateMailNavigationItemBehavior behavior)
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
if (dependencyPropertyChangedEventArgs.NewValue != null)
behavior.RegisterMenuItemChanges();
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
behavior.ManageAccounts();
2024-04-18 01:44:37 +02:00
}
2025-02-16 11:54:23 +01:00
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
private void RegisterMenuItemChanges()
{
if (MenuItems != null)
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
MenuItems.CollectionChanged -= MenuCollectionUpdated;
MenuItems.CollectionChanged += MenuCollectionUpdated;
2024-04-18 01:44:37 +02:00
}
2025-02-16 11:54:23 +01:00
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
private void MenuCollectionUpdated(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
ManageAccounts();
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
private static void OnSelectedMenuItemChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
if (dependencyObject is CreateMailNavigationItemBehavior behavior)
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
behavior.ManageAccounts();
2024-04-18 01:44:37 +02:00
}
2025-02-16 11:54:23 +01:00
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
private void ManageAccounts()
{
if (MenuItems == null) return;
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
AssociatedObject.MenuItems.Clear();
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
if (SelectedMenuItem == null)
{
// ??
2024-04-18 01:44:37 +02:00
}
}
}