From 59032dcff8bb7dbd9d58c2813bd978ad354c709f Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 28 Dec 2015 17:51:46 +0000 Subject: [PATCH] Make DropDown in ControlCatalog display correctly. --- .../ControlCatalog/Pages/CarouselPage.paml | 6 ++--- src/Perspex.Controls/DropDown.cs | 22 +++++++++++++++++-- src/Perspex.Themes.Default/DropDown.paml | 1 + 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/samples/ControlCatalog/Pages/CarouselPage.paml b/samples/ControlCatalog/Pages/CarouselPage.paml index 3a38e0abd4..48850688af 100644 --- a/samples/ControlCatalog/Pages/CarouselPage.paml +++ b/samples/ControlCatalog/Pages/CarouselPage.paml @@ -20,9 +20,9 @@ - - Transition - + + Transition + None Slide Crossfade diff --git a/src/Perspex.Controls/DropDown.cs b/src/Perspex.Controls/DropDown.cs index 7995d48105..94e20fe88a 100644 --- a/src/Perspex.Controls/DropDown.cs +++ b/src/Perspex.Controls/DropDown.cs @@ -83,6 +83,12 @@ namespace Perspex.Controls return new ItemContainerGenerator(this, ListBoxItem.ContentProperty); } + protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e) + { + base.OnAttachedToLogicalTree(e); + this.UpdateSelectionBoxItem(this.SelectedItem); + } + protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); @@ -149,7 +155,19 @@ namespace Perspex.Controls private void SelectedItemChanged(PerspexPropertyChangedEventArgs e) { - var control = e.NewValue as IControl; + UpdateSelectionBoxItem(e.NewValue); + } + + private void UpdateSelectionBoxItem(object item) + { + var contentControl = item as IContentControl; + + if (contentControl != null) + { + item = contentControl.Content; + } + + var control = item as IControl; if (control != null) { @@ -169,7 +187,7 @@ namespace Perspex.Controls } else { - SelectionBoxItem = e.NewValue; + SelectionBoxItem = item; } } } diff --git a/src/Perspex.Themes.Default/DropDown.paml b/src/Perspex.Themes.Default/DropDown.paml index ac136e7bbe..e835a1cb24 100644 --- a/src/Perspex.Themes.Default/DropDown.paml +++ b/src/Perspex.Themes.Default/DropDown.paml @@ -4,6 +4,7 @@ +