Files
Hyperbar/Hyperbar.UI.Windows/ViewModelContentBinder.cs
TheXamlGuy 41b9d5e0fc Settings
2024-02-15 20:59:36 +00:00

36 lines
1.1 KiB
C#

using Microsoft.UI.Xaml;
using System.Reflection;
namespace Hyperbar.UI.Windows;
public class ViewModelContentBinder(NavigationTargetCollection contents) :
IViewModelContentBinder
{
public void Bind(FrameworkElement view,
object context)
{
if (context.GetType().GetCustomAttributes<NavigationTargetAttribute>()
is IEnumerable<NavigationTargetAttribute> attributes)
{
foreach (NavigationTargetAttribute attribute in attributes)
{
if (!contents.ContainsKey(attribute.Name))
{
if (view.FindName(attribute.Name) is FrameworkElement content)
{
contents.Add(attribute.Name, content);
void HandleUnloaded(object sender, RoutedEventArgs args)
{
view.Unloaded -= HandleUnloaded;
contents.Remove(attribute.Name);
}
view.Unloaded += HandleUnloaded;
}
}
}
}
}
}