Browse Source

Removed ItemsControl.MemberSelector.

It didn't work out.
pull/58/head
Steven Kirk 12 years ago
parent
commit
39295aa8f2
  1. 9
      Perspex.Controls/ItemsControl.cs
  2. 29
      Perspex.Controls/Presenters/ItemsPresenter.cs
  3. 1
      Perspex.Themes.Default/DeckStyle.cs
  4. 1
      Perspex.Themes.Default/ListBoxStyle.cs
  5. 5
      TestApplication/Program.cs
  6. 27
      Tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs

9
Perspex.Controls/ItemsControl.cs

@ -30,9 +30,6 @@ namespace Perspex.Controls
public static readonly PerspexProperty<ItemsPanelTemplate> ItemsPanelProperty =
PerspexProperty.Register<ItemsControl, ItemsPanelTemplate>("ItemsPanel", defaultValue: DefaultPanel);
public static readonly PerspexProperty<Func<object, object>> MemberSelectorProperty =
PerspexProperty.Register<ItemsControl, Func<object, object>>("MemberSelector");
private ItemContainerGenerator itemContainerGenerator;
private PerspexReadOnlyListView<IVisual, ILogical> logicalChildren =
@ -77,12 +74,6 @@ namespace Perspex.Controls
set { this.SetValue(ItemsPanelProperty, value); }
}
public Func<object, object> MemberSelector
{
get { return this.GetValue(MemberSelectorProperty); }
set { this.SetValue(MemberSelectorProperty, value); }
}
IPerspexReadOnlyList<ILogical> ILogical.LogicalChildren
{
get

29
Perspex.Controls/Presenters/ItemsPresenter.cs

@ -23,9 +23,6 @@ namespace Perspex.Controls.Presenters
public static readonly PerspexProperty<ItemsPanelTemplate> ItemsPanelProperty =
ItemsControl.ItemsPanelProperty.AddOwner<ItemsPresenter>();
public static readonly PerspexProperty<Func<object, object>> MemberSelectorProperty =
ItemsControl.MemberSelectorProperty.AddOwner<ItemsPresenter>();
private bool createdPanel;
private DataTemplate memberSelectorTemplate;
@ -33,7 +30,6 @@ namespace Perspex.Controls.Presenters
public ItemsPresenter()
{
this.GetObservableWithHistory(ItemsProperty).Subscribe(this.ItemsChanged);
this.GetObservable(MemberSelectorProperty).Subscribe(this.MemberSelectorChanged);
}
public ItemContainerGenerator ItemContainerGenerator
@ -54,12 +50,6 @@ namespace Perspex.Controls.Presenters
set { this.SetValue(ItemsPanelProperty, value); }
}
public Func<object, object> MemberSelector
{
get { return this.GetValue(MemberSelectorProperty); }
set { this.SetValue(MemberSelectorProperty, value); }
}
public Panel Panel
{
get;
@ -166,24 +156,5 @@ namespace Perspex.Controls.Presenters
this.InvalidateMeasure();
}
}
private void MemberSelectorChanged(Func<object, object> selector)
{
if (this.memberSelectorTemplate != null)
{
this.DataTemplates.Remove(this.memberSelectorTemplate);
this.memberSelectorTemplate = null;
}
if (selector != null)
{
var templatedParent = this.TemplatedParent as Control;
this.memberSelectorTemplate = new DataTemplate(o =>
templatedParent?.MaterializeDataTemplate(selector(o)) ??
DataTemplate.Default.Build(selector(o)));
this.DataTemplates.Add(this.memberSelectorTemplate);
}
}
}
}

1
Perspex.Themes.Default/DeckStyle.cs

@ -48,7 +48,6 @@ namespace Perspex.Themes.Default
Id = "itemsPresenter",
[~ItemsPresenter.ItemsProperty] = control[~Deck.ItemsProperty],
[~ItemsPresenter.ItemsPanelProperty] = control[~Deck.ItemsPanelProperty],
[~ItemsPresenter.MemberSelectorProperty] = control[~Deck.MemberSelectorProperty],
};
}
}

1
Perspex.Themes.Default/ListBoxStyle.cs

@ -45,7 +45,6 @@ namespace Perspex.Themes.Default
Id = "itemsPresenter",
[~ItemsPresenter.ItemsProperty] = control[~ListBox.ItemsProperty],
[~ItemsPresenter.ItemsPanelProperty] = control[~ListBox.ItemsPanelProperty],
[~ItemsPresenter.MemberSelectorProperty] = control[~ListBox.MemberSelectorProperty],
}
}
};

5
TestApplication/Program.cs

@ -420,11 +420,6 @@ namespace TestApplication
SelectedIndex = 0,
MaxHeight = 300,
}),
new Deck
{
Items = listBoxData,
[!Deck.SelectedItemProperty] = listBox[!ListBox.SelectedItemProperty],
},
new DropDown
{
Items = listBoxData,

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

@ -72,32 +72,5 @@ namespace Perspex.Controls.UnitTests.Presenters
Assert.Equal(2, target.Panel.GetVisualChildren().Count());
}
[Fact]
public void MemberSelector_Should_Be_Applied_To_Items()
{
var target = new ItemsPresenter
{
Items = new[]
{
new Item { Name = "foo" },
new Item { Name = "bar" },
},
MemberSelector = x => ((Item)x).Name,
};
target.ApplyTemplate();
var itemText = target.ItemContainerGenerator.GetAll()
.Select(x => ((TextBlock)x.Item2).Text)
.ToList();
Assert.Equal(new[] { "foo", "bar" }, itemText);
}
private class Item
{
public string Name { get; set; }
}
}
}

Loading…
Cancel
Save