40 lines
1.4 KiB
C#
40 lines
1.4 KiB
C#
using Microsoft.UI.Xaml;
|
|
using Microsoft.UI.Xaml.Controls;
|
|
using Microsoft.UI.Xaml.Data;
|
|
|
|
namespace Hyperbar.Controls.Windows;
|
|
|
|
public class DesktopApplicationBarPresenter :
|
|
ContentControl
|
|
{
|
|
public static readonly DependencyProperty TemplateSettingsProperty =
|
|
DependencyProperty.Register(nameof(TemplateSettings),
|
|
typeof(DesktopApplicationBarPresenterTemplateSettings), typeof(DesktopApplicationBarPresenter),
|
|
new PropertyMetadata(null));
|
|
|
|
internal new DesktopApplicationBar? Parent;
|
|
|
|
public DesktopApplicationBarPresenter()
|
|
{
|
|
DefaultStyleKey = typeof(DesktopApplicationBarPresenter);
|
|
TemplateSettings = new DesktopApplicationBarPresenterTemplateSettings();
|
|
}
|
|
|
|
protected override void OnApplyTemplate()
|
|
{
|
|
SetBinding(ContentProperty, new Binding
|
|
{
|
|
Source = Parent,
|
|
Mode = BindingMode.TwoWay,
|
|
Path = new PropertyPath(nameof(Parent.Content)),
|
|
});
|
|
}
|
|
|
|
public DesktopApplicationBarPresenterTemplateSettings TemplateSettings
|
|
{
|
|
get => (DesktopApplicationBarPresenterTemplateSettings)GetValue(TemplateSettingsProperty);
|
|
set => SetValue(TemplateSettingsProperty, value);
|
|
}
|
|
|
|
internal void UpdatePlacementState(DesktopApplicationBarPlacemenet placement) => VisualStateManager.GoToState(this, $"{placement}Placement", true);
|
|
} |