【问题标题】:Element addressing within a DataTemplate from a ContentControl来自 ContentControl 的 DataTemplate 中的元素寻址
【发布时间】:2010-11-17 12:59:51
【问题描述】:

如何访问通过 ContentControl 显示的 DataTemplate 中包含的元素。我有一个 ContentControl,它承载了一个 PresentationModel,如下所示:

<ContentControl x:Name="ContentContainer"
                Content="{Binding}" 
                ContentTemplate="{Binding ContentControlTemplate, ElementName=this}"

其中“this”是视图 (UserControl)。

有一个我想 EndEdit 的 DataGridControl,所以我尝试了这个:

ContentPresenter presenter = VisualTreeHelper.GetChild(this. ContentContainer, 0) as ContentPresenter;
DataGridControl dg = this. ContentContainer.ContentTemplate.FindName("datagrid", presenter) as DataGridControl;
dg.EndEdit();

问题是 ContentControl 没有孩子,可能是因为内容的绑定方式?

感谢您的帮助。

【问题讨论】:

    标签: wpf datatemplate contentcontrol


    【解决方案1】:

    好吧,您正在将 GetChild 的结果投射到 ContentPresenter。根据其模板,情况可能并非如此。我认为它的默认模板包括一个边框,所以你的演员将返回 null。如果除了显示内容不需要它做任何事情,为什么不直接使用 ContentPresenter 呢?

    【讨论】:

    • 语句“VisualTreeHelper.GetChild(this.ContentContainer, 0)”返回 null,由于某种原因它没有子级,即使在演员表之前也是如此。我没想到直接尝试 Contentpresenter,我会试一试。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多