43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
using System;
|
|
using Windows.UI.Xaml.Controls;
|
|
using Windows.UI.Xaml.Data;
|
|
using FluentTerminal.App.ViewModels.Menu;
|
|
using Windows.UI.Xaml.Controls.Primitives;
|
|
|
|
namespace FluentTerminal.App.Converters
|
|
{
|
|
public class AppMenuViewModelToFlyoutMenuConverter : IValueConverter
|
|
{
|
|
private static readonly MenuItemViewModelBaseToMenuFlayoutItemBaseConverter ItemConverter =
|
|
new MenuItemViewModelBaseToMenuFlayoutItemBaseConverter();
|
|
|
|
public object Convert(object value, Type targetType, object parameter, string language)
|
|
{
|
|
if (value is null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
if (!(value is AppMenuViewModel appMenuViewModel))
|
|
{
|
|
throw new ArgumentException(
|
|
$"Invalid {nameof(value)} argument type: {value.GetType()}. {typeof(AppMenuViewModel)} expected.");
|
|
}
|
|
|
|
var menuFlyout = new MenuFlyout
|
|
{
|
|
Placement = FlyoutPlacementMode.BottomEdgeAlignedLeft
|
|
};
|
|
|
|
foreach (var menuItemViewModelBase in appMenuViewModel.Items)
|
|
{
|
|
menuFlyout.Items?.Add((MenuFlyoutItemBase) ItemConverter.Convert(menuItemViewModelBase));
|
|
}
|
|
|
|
return menuFlyout;
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, string language) =>
|
|
throw new NotSupportedException();
|
|
}
|
|
} |