我看到了一些与我的问题非常相似的解决方案,但并不能适用于我的情况。(具体而言,请参考这篇文章:http://blogs.msdn.com/wpfsdk/archive/2007/04/16/how-do-i-programmatically-interact-with-template-generated-elements-part-ii.aspx)
我的ItemsControl绑定了一个可观察集合,其中可以动态添加项目。
当我向可观察集合中添加一个项目时,模板化的项目会正确呈现在我的itemscontrol中,但我无法弄清楚如何访问它。在我的可观察集合更改代码中,我正在尝试访问有关信息。我使用自定义DataTemplateSelector根据集合中项的数据返回3种不同的数据模板之一。
以下是我的ItemsControl XAML的概要:
我看到的解决方案建议使用
在这些示例中,它们总是寻找有关ListBox或ComboBox(继承自ContentControl)的信息。然而,当我调用(在我的代码后台)
然后,当我尝试访问此ContentPresenter的ContentTemplate时,我会得到一个空对象异常。
我有一个直觉,我的其余麻烦都来自那里。
我想做的就是从新创建的控件的datatemplate中找到一个文本框,并将其聚焦。
帮帮忙吧! :-)
我的ItemsControl绑定了一个可观察集合,其中可以动态添加项目。
当我向可观察集合中添加一个项目时,模板化的项目会正确呈现在我的itemscontrol中,但我无法弄清楚如何访问它。在我的可观察集合更改代码中,我正在尝试访问有关信息。我使用自定义DataTemplateSelector根据集合中项的数据返回3种不同的数据模板之一。
以下是我的ItemsControl XAML的概要:
<ItemsControl Name="myItemsControl" ItemTemplateSelector="{StaticResource myTempSelector}">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<ItemsPresenter/>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
我看到的解决方案建议使用
ItemContainerGenerator.ContainerFromItem(xxx)
。在这些示例中,它们总是寻找有关ListBox或ComboBox(继承自ContentControl)的信息。然而,当我调用(在我的代码后台)
myItemsControl.ItemContainerGenerator.ContainerFromItem(xxx)
时,我收到一个ContentPresenter,而不是我期望的ContentControl。然后,当我尝试访问此ContentPresenter的ContentTemplate时,我会得到一个空对象异常。
我有一个直觉,我的其余麻烦都来自那里。
我想做的就是从新创建的控件的datatemplate中找到一个文本框,并将其聚焦。
帮帮忙吧! :-)