C# ItemsControl.ItemTemplate中的WPF ContentPresenter

C# ItemsControl.ItemTemplate中的WPF ContentPresenter,c#,wpf,C#,Wpf,我有两个用户控件,WorkflowTileItemsControl和WorkflowTileControl。WorkflowTileItemsControl在ItemsControl中承载WorkflowTileControl。但是,WorkflowTileControl上有一些依赖属性,我希望使用WorkflowTileItemsControl向任何对象公开这些属性。为此,这里是WorkflowTileItemsControl的ItemsControl代码 <ItemsControl I

我有两个用户控件,WorkflowTileItemsControl和WorkflowTileControl。WorkflowTileItemsControl在ItemsControl中承载WorkflowTileControl。但是,WorkflowTileControl上有一些依赖属性,我希望使用WorkflowTileItemsControl向任何对象公开这些属性。为此,这里是WorkflowTileItemsControl的ItemsControl代码

<ItemsControl ItemsSource="{Binding Source={StaticResource WorkflowTilesViewSource}}">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <ContentPresenter Content="{Binding WorkflowTileControl, ElementName=ctrlWorkflowTileItems}" />
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

然而,这似乎不起作用。它仅显示ItemsControl中的最后一项。下面是有效的代码,也是我正在寻找的功能(减去硬编码所有依赖项属性)


这就是我的调用代码

<OrderCommon:WorkflowTileItemsControl WorkflowRequirementTypeCode="DISBURSEMENTDFCT" Margin="5" MinWidth="1000" MaxWidth="1250" HorizontalAlignment="Left">
  <OrderCommon:WorkflowTileItemsControl.WorkflowTileControl>
    <OrderCommon:WorkflowTileControl IsReadOnly="True" Margin="5" TasksTitle="Defects" />
  </OrderCommon:WorkflowTileItemsControl.WorkflowTileControl>
</OrderCommon:WorkflowTileItemsControl>


我觉得我错过了一些简单的步骤。我不确定ContentPresenter是否适合这份工作。我以前从未在WPF中做过类似的事情。有人能帮忙吗?

经过几天的研究,我找到了解决办法。WorkflowTileItemsControl需要公开DataTemplate的依赖项属性,该属性将绑定到ItemsControl的ItemsTemplate。以下是WorkflowTileItemsControl的xaml:

<ItemsControl ItemsSource="{Binding Source={StaticResource WorkflowTilesViewSource}}" ItemTemplate="{Binding WorkflowTileTemplate, ElementName=ctrlWorkflowTileItems}">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>

下面是调用控件的xaml:

<OrderCommon:WorkflowTileItemsControl WorkflowRequirementTypeCode="DISBURSEMENTDFCT" Margin="5" Width="1130" HorizontalAlignment="Left">
  <OrderCommon:WorkflowTileItemsControl.WorkflowTileTemplate>
    <DataTemplate>
      <OrderCommon:WorkflowTileControl IsReadOnly="True" Margin="5" TasksTitle="Defects" />
    </DataTemplate>
  </OrderCommon:WorkflowTileItemsControl.WorkflowTileTemplate>
</OrderCommon:WorkflowTileItemsControl>

<OrderCommon:WorkflowTileItemsControl WorkflowRequirementTypeCode="DISBURSEMENTDFCT" Margin="5" Width="1130" HorizontalAlignment="Left">
  <OrderCommon:WorkflowTileItemsControl.WorkflowTileTemplate>
    <DataTemplate>
      <OrderCommon:WorkflowTileControl IsReadOnly="True" Margin="5" TasksTitle="Defects" />
    </DataTemplate>
  </OrderCommon:WorkflowTileItemsControl.WorkflowTileTemplate>
</OrderCommon:WorkflowTileItemsControl>