【问题标题】:How do I access the UI elements within an ItemsControl?如何访问 ItemsControl 中的 UI 元素?
【发布时间】:2012-09-25 19:33:54
【问题描述】:

我已将 Silverlight ItemsControl 子类化为 SlideShow 控件。当我直接在 XAML 中对项目元素进行硬编码时,这可以正常工作。但是如果我使用DataTemplate,如何访问每个项目的 UI 元素?

【问题讨论】:

  • 为什么需要?你需要做哪些数据模板中不能做的事情?
  • SlideShow 控件针对ItemsControl 中的项目运行动画故事板,以依次淡入和淡出每个控件。它在DispatcherTimer 的刻度中执行此操作。

标签: silverlight itemscontrol


【解决方案1】:

ItemsControl 可能会在项目来来去去时为它们创建新项目,因此您必须使用ItemsControl.Items 获取每个数据项,然后使用ItemsControl.ItemContainerGenerator.ContainerFromItem(或ItemContainerGenerator 上的其他方法查找UI 元素由DataTemplate创建的那个项目

见:http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainergenerator(v=vs.95).aspx

【讨论】:

  • 我没有使用 WPF,但我认为这可能仍然有帮助。
  • 链接是针对这些东西的 Silverlight 版本。我在“ui 对象”的 generic 意义上使用 WPF 这个词。
  • 当物品容器可用时,我可以挂钩一个事件吗?
  • 我看到了 ItemsChanged 事件,但我没有看到任何生成的东西。您可能需要在 ItemsControl 上观看其他事件?
【解决方案2】:

用 foreach 语句解析它?

例如:

foreach(ParentObject.Children 中的 ChildObject c)

【讨论】:

  • 我知道如何遍历一个序列。我想弄清楚的是什么是“儿童”。
猜你喜欢
  • 1970-01-01
  • 2011-09-05
  • 2021-11-23
  • 2020-08-23
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
相关资源
最近更新 更多