From 3b5d338ea5a84805616d11b97900391709af6282 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 15 Jan 2016 01:08:14 +0100 Subject: [PATCH] Added DropDownItem. So that drop down items can be highlighted as they're hovered. --- .../ControlCatalog/Pages/CarouselPage.paml | 6 ++--- src/Perspex.Controls/DropDown.cs | 2 +- src/Perspex.Controls/DropDownItem.cs | 12 ++++++++++ src/Perspex.Controls/Perspex.Controls.csproj | 1 + .../Primitives/SelectingItemsControl.cs | 4 ++-- src/Perspex.Themes.Default/DefaultTheme.paml | 1 + src/Perspex.Themes.Default/DropDown.paml | 4 +--- src/Perspex.Themes.Default/DropDownItem.paml | 23 +++++++++++++++++++ .../Perspex.Themes.Default.csproj | 3 +++ 9 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 src/Perspex.Controls/DropDownItem.cs create mode 100644 src/Perspex.Themes.Default/DropDownItem.paml diff --git a/samples/ControlCatalog/Pages/CarouselPage.paml b/samples/ControlCatalog/Pages/CarouselPage.paml index 098f63244e..0b2b42073c 100644 --- a/samples/ControlCatalog/Pages/CarouselPage.paml +++ b/samples/ControlCatalog/Pages/CarouselPage.paml @@ -23,9 +23,9 @@ Transition - None - Slide - Crossfade + None + Slide + Crossfade diff --git a/src/Perspex.Controls/DropDown.cs b/src/Perspex.Controls/DropDown.cs index 94e20fe88a..2616db1e01 100644 --- a/src/Perspex.Controls/DropDown.cs +++ b/src/Perspex.Controls/DropDown.cs @@ -80,7 +80,7 @@ namespace Perspex.Controls protected override IItemContainerGenerator CreateItemContainerGenerator() { - return new ItemContainerGenerator(this, ListBoxItem.ContentProperty); + return new ItemContainerGenerator(this, DropDownItem.ContentProperty); } protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e) diff --git a/src/Perspex.Controls/DropDownItem.cs b/src/Perspex.Controls/DropDownItem.cs new file mode 100644 index 0000000000..592e94dd71 --- /dev/null +++ b/src/Perspex.Controls/DropDownItem.cs @@ -0,0 +1,12 @@ +// Copyright (c) The Perspex Project. All rights reserved. +// Licensed under the MIT license. See licence.md file in the project root for full license information. + +namespace Perspex.Controls +{ + /// + /// A selectable item in a . + /// + public class DropDownItem : ListBoxItem + { + } +} diff --git a/src/Perspex.Controls/Perspex.Controls.csproj b/src/Perspex.Controls/Perspex.Controls.csproj index 2a9e3afc59..b563cdbe82 100644 --- a/src/Perspex.Controls/Perspex.Controls.csproj +++ b/src/Perspex.Controls/Perspex.Controls.csproj @@ -50,6 +50,7 @@ + diff --git a/src/Perspex.Controls/Primitives/SelectingItemsControl.cs b/src/Perspex.Controls/Primitives/SelectingItemsControl.cs index 4a6c9e0060..3cc2edb0e2 100644 --- a/src/Perspex.Controls/Primitives/SelectingItemsControl.cs +++ b/src/Perspex.Controls/Primitives/SelectingItemsControl.cs @@ -245,8 +245,8 @@ namespace Perspex.Controls.Primitives protected IControl GetContainerFromEventSource(IInteractive eventSource) { var item = ((IVisual)eventSource).GetSelfAndVisualAncestors() - .OfType() - .FirstOrDefault(x => x.LogicalParent == this); + .OfType() + .FirstOrDefault(x => x.LogicalParent == this && ItemContainerGenerator?.IndexFromContainer(x) != -1); return item as IControl; } diff --git a/src/Perspex.Themes.Default/DefaultTheme.paml b/src/Perspex.Themes.Default/DefaultTheme.paml index 4e9b5cda0e..e59d1b1713 100644 --- a/src/Perspex.Themes.Default/DefaultTheme.paml +++ b/src/Perspex.Themes.Default/DefaultTheme.paml @@ -5,6 +5,7 @@ + diff --git a/src/Perspex.Themes.Default/DropDown.paml b/src/Perspex.Themes.Default/DropDown.paml index e835a1cb24..0c4eb6f5e6 100644 --- a/src/Perspex.Themes.Default/DropDown.paml +++ b/src/Perspex.Themes.Default/DropDown.paml @@ -35,8 +35,7 @@ PlacementTarget="{TemplateBinding}" StaysOpen="False"> + BorderThickness="1"> @@ -46,7 +45,6 @@ - + + + \ No newline at end of file diff --git a/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj b/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj index cfc8544d16..aff93ac443 100644 --- a/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj +++ b/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj @@ -144,6 +144,9 @@ Designer + + Designer + Designer