|
|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|