我设法将内容重定向到我的stackpanel,如下所示:
<UserControl
x:Name="taskItem">
<UserControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<Label x:Name="labelHeader" Content="{Binding ElementName=taskItem,Path=Header}" FontFamily="Tahoma" FontSize="16" FontWeight="Bold" />
<Border BorderThickness="0,1,0,0" BorderBrush="#999999" Margin="5,0,5,0">
<StackPanel Margin="10,5,0,0">
<ContentPresenter Content="{TemplateBinding Content}" />
</StackPanel>
</Border>
</StackPanel>
</DataTemplate>
</UserControl.ContentTemplate>
我正在尝试创建一个控件,它有一个标题,在它下面有一行,然后是N个子内容。但是,在它当前的实现中,它不会允许多个。
我在这里做错了什么?
答案 0 :(得分:4)
根据定义,用户控件有一个子节点,因为它继承自ContentControl。使用户控件具有所有标头,然后使ItemsControl成为UserControl的内容。将DataTemplate应用于ItemsControl的ItemTemplate属性。
<UserControl x:Class="WindowsApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Name="MainHeadersGrid" Grid.Row="0">
<TextBlock Text="Put your headers here" />
</Grid>
<ItemsControl Name="childItemsWillGoInHere" ItemsSource="{Binding}" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding PropertyOfItem}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
现在,将UserControl的模板的DataContext分配给要显示的对象的集合。