Browse Source

Make `PopupHost` a templated control.

pull/2778/head
Steven Kirk 7 years ago
parent
commit
2697104dbb
  1. 8
      src/Avalonia.Controls/Primitives/PopupHost.cs
  2. 1
      src/Avalonia.Themes.Default/DefaultTheme.xaml
  3. 12
      src/Avalonia.Themes.Default/PopupHost.xaml

8
src/Avalonia.Controls/Primitives/PopupHost.cs

@ -1,24 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Disposables;
using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives.PopupPositioning;
using Avalonia.Interactivity;
using Avalonia.LogicalTree;
using Avalonia.Media;
using Avalonia.Threading;
using Avalonia.VisualTree;
namespace Avalonia.Controls.Primitives
{
public class PopupHost : Decorator, IPopupHost, IInteractive, IManagedPopupPositionerPopup
public class PopupHost : ContentControl, IPopupHost, IInteractive, IManagedPopupPositionerPopup
{
private readonly OverlayLayer _overlayLayer;
private PopupPositionerParameters _positionerParameters = new PopupPositionerParameters();
private ManagedPopupPositioner _positioner;
private bool _shown;
private IControl _content;
public PopupHost(OverlayLayer overlayLayer)
{
@ -28,7 +24,7 @@ namespace Avalonia.Controls.Primitives
public void SetContent(IControl control)
{
Child = control;
Content = control;
}
public IVisual VisualRoot => null;

1
src/Avalonia.Themes.Default/DefaultTheme.xaml

@ -19,6 +19,7 @@
<StyleInclude Source="resm:Avalonia.Themes.Default.Menu.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.ContextMenu.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.MenuItem.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.PopupHost.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.PopupRoot.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.ProgressBar.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.RadioButton.xaml?assembly=Avalonia.Themes.Default"/>

12
src/Avalonia.Themes.Default/PopupHost.xaml

@ -0,0 +1,12 @@
<Style xmlns="https://github.com/avaloniaui" Selector="PopupHost">
<Setter Property="Background" Value="{DynamicResource ThemeBackgroundBrush}"/>
<Setter Property="Template">
<ControlTemplate>
<ContentPresenter Name="PART_ContentPresenter"
Background="{TemplateBinding Background}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}"
Padding="{TemplateBinding Padding}"/>
</ControlTemplate>
</Setter>
</Style>
Loading…
Cancel
Save