diff --git a/Perspex.Controls/DropDown.cs b/Perspex.Controls/DropDown.cs index d2ec168cb3..ea2c1d1a2c 100644 --- a/Perspex.Controls/DropDown.cs +++ b/Perspex.Controls/DropDown.cs @@ -27,6 +27,11 @@ namespace Perspex.Controls public static readonly PerspexProperty IsDropDownOpenProperty = PerspexProperty.Register("IsDropDownOpen"); + static DropDown() + { + FocusableProperty.OverrideDefaultValue(true); + } + public DropDown() { this.GetObservableWithHistory(ContentProperty).Subscribe(this.SetContentParent); diff --git a/Perspex.Themes.Default/DropDownStyle.cs b/Perspex.Themes.Default/DropDownStyle.cs index 54374859e3..3e3386cef1 100644 --- a/Perspex.Themes.Default/DropDownStyle.cs +++ b/Perspex.Themes.Default/DropDownStyle.cs @@ -8,8 +8,9 @@ namespace Perspex.Themes.Default { using System.Linq; using System.Reactive.Linq; + using Collections; using Perspex.Controls; - using Controls.Presenters; + using Perspex.Controls.Presenters; using Perspex.Controls.Primitives; using Perspex.Controls.Shapes; using Perspex.Controls.Templates; @@ -30,6 +31,7 @@ namespace Perspex.Themes.Default new Setter(DropDown.TemplateProperty, new ControlTemplate(this.Template)), new Setter(DropDown.BorderBrushProperty, new SolidColorBrush(0xff707070)), new Setter(DropDown.BorderThicknessProperty, 2.0), + new Setter(DropDown.FocusAdornerProperty, new AdornerTemplate(FocusAdornerTemplate)), new Setter(DropDown.HorizontalContentAlignmentProperty, HorizontalAlignment.Center), new Setter(DropDown.VerticalContentAlignmentProperty, VerticalAlignment.Center), }, @@ -44,6 +46,17 @@ namespace Perspex.Themes.Default }); } + public static Control FocusAdornerTemplate() + { + return new Rectangle + { + Stroke = Brushes.Black, + StrokeThickness = 1, + StrokeDashArray = new PerspexList(1, 2), + Margin = new Thickness(3.5), + }; + } + private Control Template(DropDown control) { Border result = new Border @@ -75,6 +88,7 @@ namespace Perspex.Themes.Default BorderThickness = 0, Background = Brushes.Transparent, ClickMode = ClickMode.Press, + Focusable = false, Content = new Path { Name = "checkMark",