布局周期检测到两个progressRings错误

时间:2015-05-11 19:28:41

标签: c# xaml user-controls windows-phone-8.1

我想创建一个带有两个网格的自定义用户控件,我想在其中加载图像,直到加载图像我想显示progressRing控件。添加第二个ProgressRing时会出现问题。我的XAML看起来像这样:

<Grid Margin="0,0,0,21" Background="{ThemeResource PhoneAccentBrush}">

        <Grid x:Name="leftImage" Margin="10" Width="190" Height="190" 
              HorizontalAlignment="Left">
            <Image x:Name="imageHolderLeft" x:FieldModifier="public" Width="180"         
                   Height="180" ImageFailed="imageHolderLeft_ImageFailed" 
                   ImageOpened="imageHolderLeft_ImageOpened"/>
            <Grid>
                <ProgressRing x:Name="waitImageLeft" IsActive="True" 
                              VerticalAlignment="Center" HorizontalAlignment="Center" 
                              Background="Transparent" 
                              Foreground="{ThemeResource AppBarBackgroundThemeBrush}"/>
            </Grid>
        </Grid>

        <Grid x:Name="rightImage" Margin="10" Width="190" Height="190" 
              HorizontalAlignment="Right">
            <Image x:Name="imageHolderRight" x:FieldModifier="public" Width="180" 
                   Height="180" ImageOpened="imageHolderRight_ImageOpened" 
                   ImageFailed="imageHolderRight_ImageFailed"/>
            <Grid>
                <ProgressRing x:Name="waitImageRight" IsActive="True" 
                              VerticalAlignment="Center" HorizontalAlignment="Center" 
                              Background="Transparent" 
                              Foreground="{ThemeResource AppBarBackgroundThemeBrush}"/>
            </Grid>
        </Grid>

    </Grid>

因此,当我注释掉一个ProgressRing时,它运行正常,但当有两个程序时,我的程序崩溃并出现以下错误:Layout cycle detected. Layout could not complete

有谁知道为什么? 谢谢:))

1 个答案:

答案 0 :(得分:0)

此错误表明元素的布局依赖于其他元素,这些元素间接依赖于原始元素。 Windows无法弄清整体布局...很像无限循环或无限递归。

在您的情况下,原因可能与对齐方式和大小有关。您应该能够通过简化布局来解决问题。保留外部Grid,但添加5个ColumnDefinitions,中间一个具有width *,另一个具有width Auto。摆脱其他4个网格。而是将两个图像和进度环直接放在第0、1、3和4列的主Grid中(使用Grid.Column附加属性)。将所需的尺寸放在图像和进度环的Width和Height属性上,而不是在Grid上。