代码之家  ›  专栏  ›  技术社区  ›  Stephan

实例化项模板

  •  1
  • Stephan  · 技术社区  · 14 年前

    我正在尝试创建一个 ItemsControl 在项目之间有一个分隔符,例如创建导航面包屑的控件。我希望控件是完全通用的。

    我最初的方法是创建扩展 项目控制 ,添加SeparatorTemplate属性,然后让类将分隔符添加到 ItemsHost 项控件的。这种方法的问题在于,如果向容器面板添加额外的项,则项生成器会被混淆,并且这些项不正常,无法正确删除。

    所以我的第二个计划是创建一个全新的控件,它将模拟 项目控制 但我遇到的问题是我找不到一种方法来实例化 ItemsPanelTemplate . 我想提供一个itemspanel属性,就像 项目控制 ,但我无法从该模板创建面板。

    有人能想出一种方法来例示 项目模板 或将控件添加到 项目控制 不破坏itemGenerator的面板?

    1 回复  |  直到 14 年前
        1
  •  0
  •   AnthonyWJones    14 年前

    嗯,我自己也没试过,但我想你会忽略 GetContainerForItemOverride 实现这一点。

    你可以创建一个新的 BreadCrumbItem 模板化的控件 ContentControl 在其默认模板中 ContentPresenter 以及默认情况下用作分隔符的所有内容 Grid StackPanel .

    这个 获取项覆盖的容器 生成此的新实例 面包屑 设置其 ContentTemplate ItemTemplate 您的财产 ItemsControl 导数(导数) BreadCrumb 控制?).

    你的 面包屑 控制也会暴露 BreadCrumbItemStyle 分配给的属性 面包屑 创建时间 获取项覆盖的容器 .

    为了完整性,您可能还需要实现另一个 *Container*Override 你的方法 面包屑 控制。