我不确定何时应该使用ContentPresenter而不是ContentControl(反之亦然)。此刻,我几乎一直在ContentControl中使用DataTemplate。什么时候ContentPresenter是一个更好的选择?为什么呢?

最佳答案

ContentControl是包含其他元素并具有Content -property(例如Button)的控件的基类。
ContentPresenter用于控制模板内部以显示内容。
ContentControl直接使用时(应该用作基类),具有一个控件模板,该模板使用ContentPresenter来显示其内容。

我的经验法则(并非在所有情况下都适用,请根据您的判断):

  • ControlTemplate使用ContentPresenter
  • ControlTemplate之外(包括DataTemplate和外部模板)尝试不使用它们中的任何一个,如果需要,您必须更喜欢ContentPresenter
  • 子类ContentControl,如果要创建一个托管内容的自定义“无外观”控件,并且无法通过更改现有控件的模板来获得相同的结果(这种情况很少见)。
  • 关于.net - ContentControl和ContentPresenter有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1287995/

    10-11 17:33