Files
FluentTerminal/FluentTerminal.App/Converters/MenuViewModelToFlyoutMenuConverter.cs
T
2020-03-15 11:18:31 +01:00

44 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;
using Windows.Foundation.Metadata;
namespace FluentTerminal.App.Converters
{
public class MenuViewModelToFlyoutMenuConverter : 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 MenuViewModel menuViewModel))
{
throw new ArgumentException(
$"Invalid {nameof(value)} argument type: {value.GetType()}. {typeof(MenuViewModel)} expected.");
}
var menuFlyout = new MenuFlyout
{
Placement = FlyoutPlacementMode.Bottom
};
foreach (var menuItemViewModelBase in menuViewModel.Items)
{
menuFlyout.Items?.Add((MenuFlyoutItemBase) ItemConverter.Convert(menuItemViewModelBase));
}
return menuFlyout;
}
public object ConvertBack(object value, Type targetType, object parameter, string language) =>
throw new NotSupportedException();
}
}