KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a custom Panel where I declared a custom property to hold the content (I don't want to use Children for the content): [ContentProperty(Name = "PanelContent")] public class CustomPanel : Panel { public static readonly DependencyProperty PanelContentProperty = DependencyProperty.Register("PanelContent", typeof(Collection<UIElement>), typeof(CustomPanel), new PropertyMetadata(new Collection<UIElement>(), null)); public Collection<UIElement> PanelContent { get { return (Collection<UIElement>)GetValue(PanelContentProperty); } } } This works perfectly when used like this: <CustomPanel> <TextBlock>A</TextBlock> <TextBlock>B</TextBlock> </CustomPanel> But when I want to use the panel as an ItemsPanelTemplate inside ItemsControl, the ContentProperty attribute is ignored and adds everything to the Children collection, not the PanelContent collection: <ItemsControl ItemTemplate="{StaticResource ReviewTemplate}" ItemsSource="{Binding Reviews}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <CustomPanel></CustomPanel> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> This is not how it should work. According to the documentation : An ItemsPanelTemplate object element should contain exactly one FrameworkElement-derived class that serves as the root element for items. In most cases this is a Panel-derived class. The expanded template serves as the parent for the realized items and there generally is more than one item. Therefore the XAML content property of the intended r
Tags (comma-separated)
Save Edits
Cancel