Browse Source

Use tab navigation mode of ItemsPresenter

When creating ItemsPresenter's panel
pull/58/head
Steven Kirk 11 years ago
parent
commit
9de4a11e18
  1. 9
      Perspex.Controls/Presenters/ItemsPresenter.cs
  2. 11
      Tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs

9
Perspex.Controls/Presenters/ItemsPresenter.cs

@ -24,6 +24,13 @@ namespace Perspex.Controls.Presenters
private bool createdPanel;
static ItemsPresenter()
{
KeyboardNavigation.TabNavigationProperty.OverrideDefaultValue(
typeof(ItemsPresenter),
KeyboardNavigationMode.Once);
}
public ItemsPresenter()
{
this.GetObservableWithHistory(ItemsProperty).Subscribe(this.ItemsChanged);
@ -78,7 +85,7 @@ namespace Perspex.Controls.Presenters
this.ClearVisualChildren();
this.Panel = this.ItemsPanel.Build();
this.Panel.TemplatedParent = this;
KeyboardNavigation.SetTabNavigation(this.Panel, KeyboardNavigationMode.Once);
KeyboardNavigation.SetTabNavigation(this.Panel, KeyboardNavigation.GetTabNavigation(this));
((IItemsPanel)this.Panel).ChildLogicalParent = this.TemplatedParent as ILogical;
this.AddVisualChild(this.Panel);
this.createdPanel = true;

11
Tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs

@ -48,6 +48,17 @@ namespace Perspex.Controls.UnitTests.Presenters
Assert.Equal(KeyboardNavigationMode.Once, KeyboardNavigation.GetTabNavigation(target.Panel));
}
[Fact]
public void Panel_TabNavigation_Should_Be_Set_To_ItemsPresenter_Value()
{
var target = new ItemsPresenter();
KeyboardNavigation.SetTabNavigation(target, KeyboardNavigationMode.Cycle);
target.ApplyTemplate();
Assert.Equal(KeyboardNavigationMode.Cycle, KeyboardNavigation.GetTabNavigation(target.Panel));
}
[Fact]
public void Panel_Should_Be_Visual_Child()
{

Loading…
Cancel
Save