【问题标题】:Creating a WPF Custom Control创建 WPF 自定义控件
【发布时间】:2009-10-31 10:20:24
【问题描述】:

我目前正在使用 WPF 创建一个用户界面,并希望在我的窗口上显示一个饼图。据我所知,这将涉及创建自定义控件 - 这不是将样式或模板应用于现有控件就足够的场景。我已经阅读了几篇关于自定义控件的文章,所有提供详细描述的文章似乎都使用了非常不同的方法。

不同的作者从 Control、UserControl 或 Canvas 等中派生出他们的自定义控件类。使用以下几种不同方法之一在多个地方进行渲染,包括在 OnRender 和 OnApplyTemplate 中:DrawingVisual、GeometryDrawing 或 Shape。似乎有很多不同的方法可以简单地将几个形状放在屏幕上,我现在很困惑。

我想要实现的只是一个简单的饼图,显示一个事件,只要点击饼图的一个楔形就会引发一个事件。

是否有普遍认可的“最佳”方式来解决这个问题?

【问题讨论】:

    标签: wpf custom-controls


    【解决方案1】:

    WPF Toolkit 包含一个图表控件。由于源代码也可用,也许你可以看看它以获得灵感。我没有做太多调查,但也许你所寻求的已经实现了。

    至于 WPF 中的自定义控件,我建议您获取一份 WPF Control Development Unleashed 的副本。我大约完成了一半,我必须说它非常好。它解释了有关创建您自己的控件以及如何选择您应该从中派生的类的所有内容。作者还解释了何时 创建您自己的控件,并出色地将最常见的 WPF 控件(如 Slider 或 ListBox)转变为看起来与原始控件完全不同的漂亮可视控件。例如,他拿了一个 ListBox 并将其变成一个雷达屏幕,显示正确定位的船只和潜艇,甚至连扫描锥都没有被省略。我怀疑你想要完成的事情可以使用相同的技巧来完成。

    【讨论】:

    • 确实,该工具包包含一个带有饼图实现的图表,如果它不太合适,您可以放心地重新设计以满足您的需求。但是,图表仅出现在预览版中,如果您担心的话。
    • 是的;几乎总是可以将控件重新样式化/模板化为不同的控件——但这总是最好的方法吗?如果你想要一个带有船的雷达控件,看起来使用样式 ListBox 比创建自定义控件要麻烦得多。
    【解决方案2】:

    在 codeplex 上查看 wpf 工具包。他们在路线图上有图表控件。

    【讨论】:

      猜你喜欢
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      相关资源
      最近更新 更多