Browse Source

Use ItemsPresenter in DropDown template.

Breaks a few things  - they need properly fixing.
pull/72/merge
Steven Kirk 11 years ago
parent
commit
41244d58d5
  1. 8
      Perspex.Controls/DropDown.cs
  2. 7
      Perspex.Controls/Presenters/ItemsPresenter.cs
  3. 12
      Perspex.Themes.Default/DropDownStyle.cs

8
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<ListBoxItem>(this);
}
protected override void OnPointerPressed(PointerPressEventArgs e)
{
if (!this.IsDropDownOpen)

7
Perspex.Controls/Presenters/ItemsPresenter.cs

@ -46,6 +46,13 @@ namespace Perspex.Controls.Presenters
ItemsProperty.Changed.AddClassHandler<ItemsPresenter>(x => x.ItemsChanged);
}
/// <summary>
/// Initializes a new instance of the <see cref="ItemsPresenter"/> class.
/// </summary>
public ItemsPresenter()
{
}
/// <summary>
/// Gets the <see cref="IItemContainerGenerator"/> used to generate item container
/// controls.

12
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,

Loading…
Cancel
Save