Add project files.
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
using Microsoft.UI.Xaml;
|
||||
|
||||
namespace Hyperbar.Desktop.Controls;
|
||||
|
||||
public class DesktopFlyout :
|
||||
DependencyObject
|
||||
{
|
||||
public static readonly DependencyProperty ContentProperty =
|
||||
DependencyProperty.Register(nameof(Content),
|
||||
typeof(object), typeof(DesktopFlyout),
|
||||
new PropertyMetadata(null));
|
||||
|
||||
public static readonly DependencyProperty PlacementProperty =
|
||||
DependencyProperty.Register(nameof(Placement),
|
||||
typeof(DesktopFlyoutPlacement), typeof(DesktopFlyout),
|
||||
new PropertyMetadata(DesktopFlyoutPlacement.Left, OnPlacementPropertyChanged));
|
||||
|
||||
private readonly DesktopFlyoutHost host;
|
||||
private readonly DesktopFlyoutPresenter presenter;
|
||||
|
||||
public DesktopFlyout()
|
||||
{
|
||||
presenter = new DesktopFlyoutPresenter
|
||||
{
|
||||
Parent = this
|
||||
};
|
||||
|
||||
host = new DesktopFlyoutHost(presenter);
|
||||
host.Activate();
|
||||
}
|
||||
|
||||
public object Content
|
||||
{
|
||||
get => GetValue(ContentProperty);
|
||||
set => SetValue(ContentProperty, value);
|
||||
}
|
||||
|
||||
public DesktopFlyoutPlacement Placement
|
||||
{
|
||||
get => (DesktopFlyoutPlacement)GetValue(PlacementProperty);
|
||||
set => SetValue(PlacementProperty, value);
|
||||
}
|
||||
|
||||
private static void OnPlacementPropertyChanged(DependencyObject dependencyObject,
|
||||
DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
if (dependencyObject is DesktopFlyout sender)
|
||||
{
|
||||
sender.OnPlacementPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPlacementPropertyChanged() => UpdatePlacement();
|
||||
|
||||
private void UpdatePlacement() => host.UpdatePlacement(Placement);
|
||||
}
|
||||
Reference in New Issue
Block a user