这是什么意思:“ContentControl不会自动使用DataTemplate。”?

时间:2017-03-31 09:32:29

标签: c# wpf datatemplate contentcontrol

我正在努力让我的datatemplate绑定工作;我明确地将我的DataTemplate绑定到数据类型

<DataTemplate DataType="{x:Type local:ExcelReportVM}">
    <local:ExcelReport DoubleClickHandler="{Binding}">
        <local:ExcelReport.RowColorConverter>
            <local:ReportRowColorConverter/>
        </local:ExcelReport.RowColorConverter>
    </local:ExcelReport>
</DataTemplate>

但是,我发现即使我的control.DataContextExcelReportVM,上述DataTemplate也不会被应用。

然后我read in MSDN那个

  

如果要将ContentControl绑定到Task对象的集合,   ContentControl不会自动使用DataTemplate。这个   是因为ContentControl上的绑定需要更多信息   区分是否要绑定到整个集合或   个别物件。如果您的ContentControl正在跟踪选择   一个ItemsControl类型,你可以设置的Path属性   ContentControl绑定到“/”表示您感兴趣   当前项目。有关示例,请参见如何:绑定到集合和   基于选择的显示信息。否则,您需要指定   通过设置ContentTemplate属性显式地显示DataTemplate。

这个解释听起来非常抽象,我读了几遍之后就不知道它在说什么了。有人愿意用适当的例子来解释它吗?

1 个答案:

答案 0 :(得分:1)

如果您将DataTemplate的{​​{1}}属性设置或绑定到Content对象的实例,则会应用隐式ContentControl

ExcelReportVM
<ContentControl x:Name="control" />