Files
VDownload/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs

74 lines
2.5 KiB
C#
Raw Normal View History

using Microsoft.UI.Xaml.Data;
2024-02-13 02:59:40 +01:00
using System;
using System.Collections.Generic;
using System.Linq;
2024-03-05 17:01:00 +01:00
using VDownload.Core.ViewModels.About;
using VDownload.Core.ViewModels.Authentication;
using VDownload.Core.ViewModels.Home;
using VDownload.Core.ViewModels.Settings;
2024-03-08 20:48:31 +01:00
using VDownload.Core.ViewModels.Subscriptions;
2024-03-05 17:01:00 +01:00
using VDownload.Core.Views.About;
using VDownload.Core.Views.Authentication;
using VDownload.Core.Views.Home;
using VDownload.Core.Views.Settings;
2024-03-08 20:48:31 +01:00
using VDownload.Core.Views.Subscriptions;
2024-02-13 02:59:40 +01:00
namespace VDownload.Core.Views
2024-02-13 02:59:40 +01:00
{
public class ViewModelToViewConverter : IValueConverter
{
#region FIELDS
private readonly Dictionary<Type, Type> _viewModelViewBinding = new Dictionary<Type, Type>
{
{ typeof(HomeViewModel), typeof(HomeView) },
{ typeof(HomeDownloadsViewModel), typeof(HomeDownloadsView) },
{ typeof(HomeVideoViewModel), typeof(HomeVideoView) },
{ typeof(HomeVideoCollectionViewModel), typeof(HomeVideoCollectionView) },
2024-03-08 20:48:31 +01:00
{ typeof(SubscriptionsViewModel), typeof(SubscriptionsView) },
2024-02-13 02:59:40 +01:00
{ typeof(SettingsViewModel), typeof(SettingsView) },
2024-03-05 17:01:00 +01:00
{ typeof(AboutViewModel), typeof(AboutView) },
2024-02-13 02:59:40 +01:00
{ typeof(AuthenticationViewModel), typeof(AuthenticationView) }
};
2024-03-14 16:31:26 +01:00
protected static IServiceProvider _serviceProvider;
#endregion
#region PUBLIC METHODS
2024-02-13 02:59:40 +01:00
2024-03-14 16:31:26 +01:00
public static void Initialize(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider;
2024-02-13 02:59:40 +01:00
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is null)
{
return null;
}
if (value is Type type && _viewModelViewBinding.ContainsKey(type))
{
2024-03-14 16:31:26 +01:00
return _serviceProvider.GetService(_viewModelViewBinding[type]);
2024-02-13 02:59:40 +01:00
}
if (_viewModelViewBinding.ContainsKey(value.GetType()))
{
2024-03-14 16:31:26 +01:00
return _serviceProvider.GetService(_viewModelViewBinding[value.GetType()]);
2024-02-13 02:59:40 +01:00
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
Dictionary<Type, Type> viewViewModelBinding = _viewModelViewBinding.ToDictionary(x => x.Value, x => x.Key);
if (viewViewModelBinding.ContainsKey(value.GetType()))
2024-02-13 02:59:40 +01:00
{
return viewViewModelBinding[value.GetType()];
2024-02-13 02:59:40 +01:00
}
return null;
}
#endregion
}
}