From 41244d58d5bb07df1e9dbaebdd1fa9e22ec52a7c Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 4 Aug 2015 01:19:09 +0200 Subject: [PATCH] Use ItemsPresenter in DropDown template. Breaks a few things - they need properly fixing. --- Perspex.Controls/DropDown.cs | 8 ++++++-- Perspex.Controls/Presenters/ItemsPresenter.cs | 7 +++++++ Perspex.Themes.Default/DropDownStyle.cs | 12 +++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Perspex.Controls/DropDown.cs b/Perspex.Controls/DropDown.cs index bdc7d9b588..d2ec168cb3 100644 --- a/Perspex.Controls/DropDown.cs +++ b/Perspex.Controls/DropDown.cs @@ -7,8 +7,7 @@ namespace Perspex.Controls { using System; - using Perspex.Collections; - using Perspex.Controls.Presenters; + using Generators; using Perspex.Controls.Primitives; using Perspex.Controls.Templates; using Perspex.Input; @@ -58,6 +57,11 @@ namespace Perspex.Controls set { this.SetValue(IsDropDownOpenProperty, value); } } + protected override IItemContainerGenerator CreateItemContainerGenerator() + { + return new ItemContainerGenerator(this); + } + protected override void OnPointerPressed(PointerPressEventArgs e) { if (!this.IsDropDownOpen) diff --git a/Perspex.Controls/Presenters/ItemsPresenter.cs b/Perspex.Controls/Presenters/ItemsPresenter.cs index 533f4af22e..c1ffc374b1 100644 --- a/Perspex.Controls/Presenters/ItemsPresenter.cs +++ b/Perspex.Controls/Presenters/ItemsPresenter.cs @@ -46,6 +46,13 @@ namespace Perspex.Controls.Presenters ItemsProperty.Changed.AddClassHandler(x => x.ItemsChanged); } + /// + /// Initializes a new instance of the class. + /// + public ItemsPresenter() + { + } + /// /// Gets the used to generate item container /// controls. diff --git a/Perspex.Themes.Default/DropDownStyle.cs b/Perspex.Themes.Default/DropDownStyle.cs index 6bceae8d60..54374859e3 100644 --- a/Perspex.Themes.Default/DropDownStyle.cs +++ b/Perspex.Themes.Default/DropDownStyle.cs @@ -9,6 +9,7 @@ namespace Perspex.Themes.Default using System.Linq; using System.Reactive.Linq; using Perspex.Controls; + using Controls.Presenters; using Perspex.Controls.Primitives; using Perspex.Controls.Shapes; using Perspex.Controls.Templates; @@ -91,10 +92,15 @@ namespace Perspex.Themes.Default }, new Popup { - Child = new ListBox + Child = new Border { - [~ListBox.ItemsProperty] = control[~DropDown.ItemsProperty], - [~~ListBox.SelectedItemProperty] = control[~~DropDown.SelectedItemProperty], + BorderBrush = Brushes.Black, + BorderThickness = 1, + Padding = new Thickness(4), + Child = new ItemsPresenter + { + [~ListBox.ItemsProperty] = control[~DropDown.ItemsProperty], + } }, PlacementTarget = control, StaysOpen = false,