Files
Toolkit2/Toolkit.WinUI/ContentControlHandler.cs
Dan Clark 66d61a3917 Fixes
2025-02-11 17:59:16 +00:00

49 lines
1.3 KiB
C#

using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Toolkit.Foundation;
namespace Toolkit.WinUI;
public class ContentControlHandler :
IHandler<NavigateTemplateEventArgs>
{
public void Handle(NavigateTemplateEventArgs args)
{
if (args.Region is not ContentControl contentControl)
return;
if (args.Template is not Control control)
return;
void HandleLoaded(object? sender, RoutedEventArgs args)
{
control.Loaded -= HandleLoaded;
if (control.DataContext is object content)
{
if (content is IActivation activation)
{
activation.IsActive = true;
}
}
}
void HandleUnloaded(object? sender, RoutedEventArgs args)
{
control.Unloaded -= HandleLoaded;
if (control.DataContext is object content)
{
if (content is IActivation activation)
{
activation.IsActive = false;
}
}
}
control.Loaded += HandleLoaded;
control.Unloaded += HandleUnloaded;
control.DataContext = args.Content;
contentControl.Content = control;
}
}