8

我希望创建一个自定义面板或控件来创建一种非常特殊类型的项目。

基本上,目的是拥有一个控件,您可以向其提供对象列表,并将这些对象中的每一个放入一个按钮中。问题是按钮应该像甜甜圈一样排列成一个圆圈。类似于下图。

甜甜圈图

但现在想象一下,如果可以的话,这些彩色部分中的每一个都是一个按钮。它们也将具有按钮的所有功能,例如鼠标悬停和事件。

所以,最重要的问题是:我应该使用什么样的技术来创建这种控制?有没有办法在按钮上进行某种“曲率”变换?

看起来我真的在这里寻找两个不同的东西,对吧?

我的意思是,我可以将列表中的每个项目放入一个 ItemsControl 中,该控件有一个按钮作为其 ItemTemplate。所以我只需要两件事:

第一个是径向布局面板(我已经看到了其中的一些)。

第二种方法是让每个按钮都有某种旋转和曲率变换。

有任何想法吗?

4

2 回答 2

4

我认为您正在查看三个不同的步骤:

  1. Panel孩子围成一圈的一种。重要的是,面板必须更新其子项上的只读附加依赖项属性,告诉他们它们的布局位置(以度为单位的开始位置和以度为单位的结束位置)
  2. Button根据一些开始和结束位置以弧形呈现的模板。
  3. 将两者结合起来,将按钮的开始和结束位置绑定到面板公开的附加值。
于 2010-11-25T08:24:09.807 回答
0

解决我们遇到的相同问题的另一种方法(虽然类似)是使用面板将每个“按钮”堆叠在一起。每个按钮的形状基于 2 个假想圆的计算,即内圆和外圆。然后将它们偏移 x,y 坐标到它们的正确位置,以使它们的原始位置成为甜甜圈的中心点。最难的部分显然是进行所有这些三角计算,但是一旦完成了简单的旋转、扇形、扩展等你喜欢的形状。

于 2011-03-08T04:19:40.373 回答