我想使用一个面板,其子坐标指定为面板总宽度/高度的百分比。此外,我应该能够设置坐标属性的动画,例如使按钮从10%移动到50%的面板宽度。
我做了两次尝试:
使用网格并将大小指定为星号 - 这还不够,因为默认情况下AFAIK WPF无法为星星指定的距离属性设置动画。我找到了一个可以让我这样做的自定义类,它甚至可以工作,我认为这个解决方案过于复杂,我正在寻找更简单的东西。
使用具有固定宽度和高度的Canvas并将其放入Viewbox中 - 这是一个简单的解决方案,但在调整Viewbox大小时,Canvas的整个内容也会调整大小。我希望内容具有固定的大小。
是否有一个简单的解决方案,或者我应该实现自己的面板(或者可能扩展其中一个现有面板,即Canvas)?
干杯!
答案 0 :(得分:6)
我会:
Canvas
,可能称之为RelativeCanvas
或RatioCanvas
XRatio
和YRatio
ArrangeOverride
并循环遍历所有孩子。对于每个孩子,请使用XRatio
和YRatio
以及ActualWidth
的{{1}}和ActualHeight
来计算和应用RelativeCanvas
的值和Canvas.Left
附加属性您可以按如下方式使用它:
Canvas.Top
您可能希望在完成工作后添加的一件事是控制对齐。例如,我可能会将控件的 center 与指定的比例对齐,而不是左上角。
答案 1 :(得分:-1)
这里有一个:WPF Proportional Panel