... .
, . , Panel.InternalChildren:
this.InternalChildren.OfType<MyType>().Do(...);
: , ItemsControl. DataTemplate , . ItemsControl.ItemsPanel - Canvas.
public IEnumerable<string> Items
{
get;
}
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
, ? ?
, ContentPresenters Canvas. OnVisualChildrenChanged ( ). Content ContentTemplate null - .
, , , ItemsControl, ContentPresenter:
public class MyItemsControl : ItemsControl
{
protected override DependencyObject GetContainerForItemOverride()
{
return new Button();
}
protected override bool IsItemItsOwnContainerOverride(object item)
{
return item is Button;
}
}
<self:MyItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<self:MyPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</self:MyItemsControl>
, (Panel.InternalChilder) ( - ), MyPanel :
this.InternalChildren.Cast<Button>()