【问题标题】:What would you suggest for building such a control in WPF?对于在 WPF 中构建这样的控件,您有什么建议?
【发布时间】:2010-02-14 01:49:59
【问题描述】:

我需要构建一个看起来与此类似的 WPF 控件: alt text http://img251.imageshack.us/img251/6857/circle.png

每种颜色都应该可以点击和调整大小(或可选择)。

此控件将用于设置一天中的几个小时的模式。 我曾想过制作 24 个按钮,它们会排成一个圆圈:

alt text http://img684.imageshack.us/img684/2184/buttonsk.png

另一个想法是画一个完整的圆并计算用户鼠标单击的位置以进行选择,然后画几个圆来表示数据。

关于如何构建它的任何其他/更好的想法? (请原谅我画得不好)。

【问题讨论】:

  • "可调整大小" - 由用户在运行时使用,还是仅在代码中?
  • 如何选择?你的意思是点击还是点击?如果单击,您想要与按钮相同的选择/单击行为吗?
  • 可调整大小和可选择 - 我的意思是让用户用不同的颜色标记一天中的时间。
  • 总是有 3 种颜色,还是用户可以添加/删除“颜色”?

标签: c# wpf wpf-controls custom-controls


【解决方案1】:

我认为使用多个重叠或触摸控件会产生奇怪的边缘效果。所以我会做一个自定义控件来做到这一点。它将按钮上的鼠标位置向下转换为切片,然后执行适当的操作。

使用单个控件,您还可以想出一种合理的方式来处理键盘输入、显示选择和允许多选行为。

【讨论】:

    【解决方案2】:

    听起来您想要一个自定义的 ListBox(可选择/可点击的多个项目)。对于布局,您可能希望使用某种类型的 RadialPanel 作为 ItemsPanel。您可能还需要更改 ItemContainerStyle 以使您的 ListBoxItems 看起来像上面的内容,可能需要一些触发器来根据选择状态更改颜色。根据您需要的项目行为,您可能需要创建自定义 ListBox/ListBoxItem 派生的自定义控件,但在很多情况下,内置行为会让您走得更远。要将其作为一个单元重用,您可以将 ListBox 及其 24 小时项目和自定义模板包装在 UserControl 中,并以您需要的任何形式公开选择数据作为依赖属性(例如表示所选时间的数据项的 IEnumerable )。

    这对您开始有帮助吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多