How do I ensure only the headers are shown for the first item in an ItemsControl in WPF?
Posted
by Dan Ryan
on Stack Overflow
See other posts from Stack Overflow
or by Dan Ryan
Published on 2010-02-15T12:17:37Z
Indexed on
2010/05/02
11:07 UTC
Read the original article
Hit count: 307
wpf
|itemscontrol
I am using MVVM binding an ObservableCollection of children to an ItemsControl. The ItemsControl contains a UserControl used to style the UI for the children.
<ItemsControl ItemsSource="{Binding Documents}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<View:DocumentView Margin="0, 10, 0, 0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
I want to show a header row for the contents of the ItemsControl but only want to show this once at the top (not for every child). How can I implement this behaviour in the DocumentView user control? Fyi I am using a Grid layout to style the child rows:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="34"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="60" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.ColumnSpan="4" Grid.Row="0" Text="Should only show this at the top"></TextBlock>
<Image Grid.Column="0" Grid.Row="1" Height="24" Width="24" Source="/Beazley.Documents.Presentation;component/Icons/error.png"></Image>
<ComboBox Grid.Column="1" Grid.Row="1" Name="ContentTypes" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type View:MainView}}, Path=DataContext.ContentTypes}" SelectedValue="{Binding ContentType}"/>
<TextBox Grid.Column="2" Grid.Row="1" Text="{Binding Path=FileName}"/>
<Button Grid.Column="3" Grid.Row="1"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type View:MainView}}, Path=DataContext.RemoveFile}"
CommandParameter="{Binding}">Remove</Button>
</Grid>
© Stack Overflow or respective owner