【问题标题】:wpf custom panelwpf自定义面板
【发布时间】:2011-08-09 19:39:53
【问题描述】:

我正在考虑创建一个面板,该面板将所有子项包裹在 ViewBox 中,以便将它们缩小到某个统一的大小。

我不确定这是否可能,但我想我会问。我不确定这是否可行的原因是 Panel 没有任何与它们相关的 xaml。他们用代码测量和安排孩子。有什么建议吗?


在不够清楚之后,我想我会更具体:

我想要一个面板,因为我想安排和测量我的孩子。

  1. 该度量找到所有子元素的平均高度/宽度。
  2. 排列将它们放入网格状图案并将它们缩放到平均高度/宽度。我不希望它们被限制,我希望它们适当地放大或缩小。

我已经使用 measureoverride 函数来查找平均高度/宽度,但我不知道如何在我的arrangeoverride 中缩放它们。

【问题讨论】:

  • 您确定要拥有一个面板吗?正如你所说,一个小组测量和安排。你所描述的听起来更像是一个 ItemsControl,它的 ItemsContainer 是一个 ViewBox……否则,请给我们一些关于你如何想象面板子级排列方式的更多信息。或者,如果我读到您的问题略有不同,您需要的是一个带有网格(或任何其他面板)的 ViewBox,它可以带孩子。请更具体
  • 我更新了我的问题...
  • 你说你已经让测量功能工作了。能否请您向我们展示您迄今为止为您的小组所做的工作,那么也许我们可以更好地了解您到底想要什么。目前看来,您并没有考虑太多。也许你可以给我们提供一个具体的例子。

标签: wpf xaml panel viewbox arrangeoverride


【解决方案1】:

您尚未完全指定您希望面板如何工作,因此我无法为您提供示例面板,但我可以为您指出一个与您想要做的事情类似的工作面板:

在示例中,您可以看到我们可以通过自己缩放面板的子级来模拟Viewbox。正如我所提到的,您希望如何扩展它们取决于您。

【讨论】:

    【解决方案2】:

    即使在您更新之后,我也同意 Markus。看来您不需要自定义面板。您需要的是一个 ItemsControl,其中 UniformGrid 作为 ItemsPanel,ViewBox 作为 ItemsContainer。 UniformGrid 决定您的项目容器的排列方式。 ViewBox 处理每个项目的拉伸和缩放。

    【讨论】:

    • UniformGrid 不会使所有内容都统一到 平均 大小,因此我需要一个自定义面板。我考虑过 UniformGrid,但我试图根据 average 大小缩放所有内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多