你会建议在WPF中构建这样的控件吗?

时间:2010-02-14 01:50:00

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

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

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

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

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

另一个想法是绘制一个完整的圆圈并计算用户鼠标点击选择的位置,并绘制几个圆圈来表示数据。

关于如何构建这个的任何其他/更好的想法? (请原谅我糟糕的画作。)

2 个答案:

答案 0 :(得分:4)

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

使用单一控件,您还可以采用合理的方式处理键盘输入并显示选择并允许多选行为。

答案 1 :(得分:2)

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

这有助于您入门吗?