【问题标题】:WinRT Metro WrapPanel render issueWinRT Metro WrapPanel 渲染问题
【发布时间】:2013-02-05 20:05:10
【问题描述】:
WinRT 不支持

WrapPanel,因此我使用以下代码: http://www.codeproject.com/Articles/24141/WrapPanel-for-Silverlight-2-0

我发现在Grid 中使用此代码存在问题。在我将WrapPanel 放入后,在行中呈现的任何控件,在同一行中呈现OVER WrapPanel。

就好像Grid 没有识别出WrapPanel 正在呈现内容,所以接下来的行中的所有控件都取而代之。

以图片为例。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 如果在 WrapPanel 之后将它们添加到父 Grid 中,它们不应该呈现在 WrapPanel 之上吗?顺便说一句,在 WinRT XAML 工具包here 中有一个版本的WrapPanel 从 Silverlight 工具包移植到 WinRT。您应该能够通过设置这些控件的Canvas.ZIndex 值来控制 Grid 子项的呈现顺序,以匹配所需的呈现顺序。我认为这在自定义面板中不起作用,但应该适用于 Grid。
  • WrapPanel 的另一个实现在此处的 Q42 库中:github.com/Q42/Q42.WinRT/blob/master/Q42.WinRT/Controls/…
  • 一个单独的单元格专门用于 WrapPanel 及其后面的每个控件。如果控件被添加到同一个单元格,则它们只能在 Grid 中彼此叠加呈现。正如我所说,在这种情况下,它们都是分开的,但仍然呈现在 WrapPanel 之上。
  • 也许该版本没有正确报告其宽度/高度,以 0 结尾,因此您的父 Grid 不会为 WrapPanel 的行分配任何空间。检查或尝试其他实现。
  • WinRT XAML Toolkit WrapPanel 完美运行!谢谢。

标签: windows-runtime windows-store-apps winrt-xaml wrappanel


【解决方案1】:

您使用的实现似乎没有正确测量面板的大小。如果它从测量传递返回的大小为 0,则带有 RowDefinition Height="Auto" 的网格将创建一个高度为 0 的行,因此如果在该行中呈现任何未裁剪的内容 - 它将呈现在下一行。从 Silverlight Toolkit 移植的 WrapPanel 的 WinRT XAML Toolkit 版本似乎很适合您。这是其他人也可以使用它的链接:http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/view/4d568d4e4c6a#WinRTXamlToolkit/Controls/WrapPanel/WrapPanel.cs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2010-10-19
    • 2016-06-27
    • 2010-11-29
    相关资源
    最近更新 更多