Как разрешить несколько элементов / контента для пользовательского элемента управления в WPF? - PullRequest
0 голосов
/ 05 марта 2009

Мне удалось добраться до перенаправления контента на мою стековую панель, как показано:

<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 число дочерних элементов. Тем не менее, в текущей реализации он не разрешит более одного.

Что я здесь не так делаю?

1 Ответ

4 голосов
/ 05 марта 2009

Пользовательский элемент управления по определению имеет одного дочернего элемента, поскольку он наследуется от ContentControl. Сделайте, чтобы у пользовательского элемента управления были все заголовки, а затем сделайте ItemsControl содержимым UserControl. Примените свой DataTemplate к свойству ItemTemplate 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>

Теперь назначьте DataContext шаблона UserControl коллекции объектов, которые вы хотите отобразить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...