【问题标题】:When should a subclass of Control be created and when should a subclass of Panel be created?什么时候应该创建 Control 的子类,什么时候应该创建 Panel 的子类?
【发布时间】:2011-09-11 09:34:22
【问题描述】:

在WPF(或silverlight)中什么时候应该创建Control的子类,什么时候应该创建Panel的子类?

他们每个人的适当场景是什么?

【问题讨论】:

  • 初步想法:获取更多自定义的面板或控件。
  • 我对你上一篇文章的回复解释了这一点。
  • @lukas:谢谢,我看到了。我发布了这个,以使问题更简单。最后一个有点太复杂了。

标签: .net wpf silverlight windows-phone-7 controls


【解决方案1】:

当我有一个严格的结构时,我会使用自定义控件——这意味着我可以在 Xaml 中准确地布置我想要的内容,即使我可能会通过拥有多个看起来完全不同的 Xaml 定义来对控件进行外观设计。一个例子是我写的一个电子表格控件。一个 Xaml 定义具有一组特定的菜单和按钮颜色和布局,另一个则完全不同。当我使用自定义控件时,我总是知道我在布局什么。

当我有一个更动态的排列时,我会使用自定义面板,我需要覆盖 MeasureOverride 和 ArrangeOverride,这些面板通常是虚拟的,这意味着我只实例化可见的内容。自定义面板的一个示例是我编写的显示数百张图像的面板。您可以更改布局(例如,一堆页面、并排 2 个页面,或尽可能多地平铺)和缩放级别。我只读取和显示自定义面板中可见的图像,并且有一个滚动条可以平移它们。

Grid、StackPanel 等大多数标准面板都是微软编写的自定义面板。这应该让您了解自定义面板的用途——以某种模式排列未知数量的子元素。另一方面,自定义控件用于设计特定的 UI,通常可以通过 Xaml 样式设置外观。

【讨论】:

    【解决方案2】:

    一个考虑因素是,当您需要新行为时,您通常只会在 WPF/Silverlight 中创建自定义控件。如果您只想更改外观,通常可以使用样式、控件模板...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 2011-05-31
      • 2011-06-21
      • 2013-06-18
      • 2012-11-13
      相关资源
      最近更新 更多