Windows Phone 8中检测到循环布局异常?

3
我有一个长列表选择器,其中包含一些地点。我想要根据分类来对它们进行排序。我使用了列表选取器和文本框进行搜索和选择分类。但是当我选择某些特定的分类时,会直接跳到调试器停止,并显示异常信息为“检测到布局循环”。我无法通过try/catch捕获此问题。
当我在网络上搜索此问题时,发现说不应该调用任何布局更新事件,但这对我来说并不可能,因为我的列表必须根据排序进行更新。
如果您有任何解决此问题的想法,请帮助我......

你关于布局更新事件是问题的说法是正确的,但当你知道它会触发时,你需要避免执行布局代码。你需要发布代码,但从你所描述的情况来看,你的LayoutUpdate正在触发,你正在该事件处理程序中更改一些布局项,这导致该事件处理程序再次触发(无限循环)。 - keyboardP
@keyboardP 你可以在这个问题的链接中查看我的代码... http://stackoverflow.com/questions/17359672/text-changed-is-called-twice-in-windows-phone-application - Sandeep Chauhan
如果您移除ListPicker或PhoneTextbox(分别尝试),是否仍会抛出错误? - keyboardP
如果我移除Phonetextbox,那么当我改变Listpicker的值时就会抛出错误。或者如果我保留两者,那么在更改Listpicker的值时不会抛出任何错误,但是当我在文本框中写入并删除内容时就会抛出错误。例如,我写了一个“c”,列表按“c”排序,这很好,但是当我删除“c”时,它就会抛出错误... - Sandeep Chauhan
3个回答

6

找到了问题的解决方案,只需要在视图中设置网格的最小高度即可……


3
如果其他人有相同的问题,这是一个补充说明:对我来说,在LongListSelector中,当图像为UniformToFill但没有给出高度/宽度时,会出现此问题。 - Eleasar
感谢您的评论。 - Ashwin N Bhanushali

0
在我的情况下,我在我的ArrangeOverride函数中犯了一个错误。我有一个计算会导致元素与负X和Y值对齐(因为我在某个地方除以了项目数减二,当添加1个元素时,这将导致负数)。
将子元素定位在负左和上边距(至少超出界限)似乎会触发新的布局更新,尽管我无法找到其源头。

0
你可以使用Loaded事件代替Layout Update事件,这样就可以摆脱这个问题了。对我来说有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接