Почему дочерняя сетка не расширяется, чтобы заполнить ширину родительской сетки? - PullRequest
0 голосов
/ 21 сентября 2010

Сетка, на которую я нацеливаюсь, - это сетка с фоновым лазурным цветом:

Почему-то она не распространяется на полную ширину LayoutRoot, и установка ее ширины программно вызовет исключение layoutcycle.Я также пытался привязать ширину к родительскому макету ... но это тоже не сработало: (

<Border Style="{StaticResource ZoomBorderStyle}">
        <Grid x:Name="LayoutRoot">

            <Grid.RowDefinitions>
                <RowDefinition Height="37"/>
                <RowDefinition Height="76"/>
                <RowDefinition/>
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <localView:ViewerMenu Width="Auto" 
                                  ZoomIn="ViewerMenu_ZoomIn" 
                                  ZoomOut="ViewerMenu_ZoomOut" 
                                  LayoutOne="ViewerMenu_One" 
                                  LayoutFour="ViewerMenu_Four" 
                                  ResoFull="ViewerMenu_Full" 
                                  Background="White" />

            <localView:ImageDetails Grid.Row="1" 
                                    ImageMetadata="{Binding CurrentImageContext}" 
                                    VerticalAlignment="Top" 
                                    Height="Auto"
                                    HorizontalAlignment="Stretch"
                                    Width="Auto"/>

            <Grid Grid.Row="1" Grid.RowSpan="2" x:Name="ViewerWrapper" Background="Azure"  
                  HorizontalAlignment="Stretch" 
                  VerticalAlignment="Stretch">


                 <Grid x:Name="QuadPanel" Visibility="Collapsed">
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>

                    <zoomControls:QuadPanelImage x:Name="QuadImageTopLeft" Content="{Binding ImageTopLeft}" Margin="15" Grid.Row="0" 
                                                 Grid.Column="0" 
                                                 PanelPosition="TopLeft" 
                                                 MouseLeftDoubleClick="InciteContentControl_MouseLeftDoubleClick"  
                                                 HorizontalContentAlignment="Center"/>
                    <zoomControls:QuadPanelImage x:Name="QuadImageTopRight" Content="{Binding ImageTopRight}" Margin="15" Grid.Row="0" 
                                                 Grid.Column="1" 
                                                 PanelPosition="TopRight" 
                                                 MouseLeftDoubleClick="InciteContentControl_MouseLeftDoubleClick" 
                                                 HorizontalContentAlignment="Center"/>
                    <zoomControls:QuadPanelImage x:Name="QuadImageBottomLeft" Content="{Binding ImageBottomLeft}" Margin="15" Grid.Row="1" 
                                                 Grid.Column="0" 
                                                 PanelPosition="BottomLeft" 
                                                 MouseLeftDoubleClick="InciteContentControl_MouseLeftDoubleClick" 
                                                 HorizontalContentAlignment="Center"/>
                    <zoomControls:QuadPanelImage x:Name="QuadImageBottomRight" Content="{Binding ImageBottomRight}" Margin="15" Grid.Row="1"
                                                 Grid.Column="1" 
                                                 PanelPosition="BottomRight" 
                                                 MouseLeftDoubleClick="InciteContentControl_MouseLeftDoubleClick" 
                                                 HorizontalContentAlignment="Center"/>
                </Grid>

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

Ваш корень макета находится внутри Границы.Поведение границы по умолчанию соответствует ее содержимому.Вы не указали XAML в стиле ZoomBorderStyle, поэтому не уверены, что это мешает.

Попробуйте добавить HorizontalAlignment = "Stretch" к границе верхнего уровня (или удалите стиль или саму границу в качестве теста).

Если это не поможет, предоставьте более подробную информацию / Xaml.Если возможно, уменьшите проблему до отдельного теста, который можно использовать без всех дополнительных контрольных ссылок.

0 голосов
/ 22 сентября 2010

До сих пор не знаю, почему Сетка не расширяется, чтобы заполнить ширину приложения после того, как я удалил все границы и установил растяжение для всех контейнеров. Во всяком случае .. Я нашел решение, которое не выдает ошибку исключения layoutrecycle:

Вместо этого (которое выдает исключение при очень быстром изменении размера)

void ZoomDocViewer_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            QuadPanel.Height = e.NewSize.Height;
            QuadPanel.Width= e.NewSize.Height;
        }

Вместо этого я получаю ширину из приложения:

 void ZoomDocViewer_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            QuadPanel.Width = Application.Current.Host.Content.ActualWidth; 
        }

Что не исключение!

...