ElementFlow:MeasureOverride中的异常

时间:2009-03-24 21:46:08

标签: wpf itemspanel measureoverride elementflow

我正在尝试在我的应用程序中使用FluidKits ElementFlow控件,但在ElementFlow的MeasureOverride方法中获得异常。

  

元素'FluidKit.Controls.ElementFlow'的布局测量覆盖不应将PositiveInfinity作为DesiredSize返回,即使Infinity以可用大小传入。

在FluidKit之后的示例应用程序中,一切顺利。当调用MeasureOverride时,可以使用控件的边界初始化availableSize-struct,但在我的应用程序中,它的宽度和高度都包含INF。

我试图找到示例与我的应用程序之间的不同之处,但两者都是一个带有列表框的网格的窗口,该列表框使用ElementFlow for ItemsPanel。

我发现其他人正在为同样的异常而苦苦挣扎,但我没有找到任何解决方案,除了给列表框一个明确的大小。但我不想给它一个大小,我希望网格管理它的布局。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您是否有机会发布一些示例代码?

我有一个类似的问题,结果我必须将网格作为根元素(之前网格在Canvas中,我最终将其移动到用户控件并且一切正常)。

答案 1 :(得分:0)

请参阅FluidKit CodePlex网站上的讨论。简单的答案是打开ElementFlow代码并将MeasureOverride中的返回值从availableSize更改为_viewport.DesiredSize。

答案 2 :(得分:0)

您无法在可变大小的网格或面板中使用ElementFlow控件。它不是为处理这种情况而编写的,如你得到的例外所示。

您没有显示您的代码。我只能假设您的控件嵌套并以允许其中一个无限增长的方式定义。例如,将ScrollViewer作为根元素粘贴在页面中,并启用特定方向的滚动。然后你有一个控制器,允许自己在那个方向上变大,当它要求测量时(在那个特定的方向上),它会将无穷大传递给子控件。如果ElementFlow控件是ScrollViewer的子控件,则会得到这个确切的异常。

如果你为页面显示你的xaml,应该很容易看出哪个父控件允许它的内容无限增长。