2009-03-05 7 views
0

J'ai réussi à aller aussi loin que la réorientation du contenu à mon StackPanel comme le montre:Comment autoriser plusieurs éléments/contenus pour un contrôle utilisateur dans WPF?

<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> 

Je suis en train de créer un contrôle qui a un en-tête, une ligne en dessous, puis N nombre de contenu enfant. Cependant, dans sa mise en œuvre actuelle, il n'en autorisera pas plus d'un.

Qu'est-ce que je fais mal ici?

Répondre

4

Un contrôle utilisateur par définition a un enfant puisqu'il hérite de ContentControl. Faites en sorte que le contrôle utilisateur possède tous les en-têtes, puis configurez ItemsControl avec le contenu de UserControl. Appliquez votre DataTemplate à la propriété ItemTemplate du ItemsControl.

<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> 

Maintenant, assignez DataContext de template de la UserControl à une collection des objets que vous souhaitez afficher.

Questions connexes