как передать высоту родительского элемента дочернему в UWP

У меня есть панель стека, и у нее одна сетка, и я бы хотел, чтобы сетка имела ту же высоту, что и панель стека.

Я пробовал играть с VerticalAlignment растяжкой или высотой 100% ничего не работает

Я попытался установить значения программно OnNavigatedTo, но это не дало результата

Любые предложения по решению этой проблемы приветствуются.

Пожалуйста, найдите код ниже

<StackPanel Grid.Row="0" Grid.RowSpan="4" Background="#CFFF" Visibility="Visible" Orientation="Vertical" Name="ProgressOverlay">
    <Grid Name="Overlaygrid"">
        <StackPanel VerticalAlignment="Center" Grid.Row="0">
            <ProgressBar 
             IsIndeterminate="True" 
             IsEnabled="True" Foreground="Black"/>
            <TextBlock Visibility="Visible" Foreground="Black" FontSize="25” T HorizontalAlignment="Center" Text="Loading"/>
        </StackPanel>
    </Grid>
</StackPanel>

person Rajan M    schedule 24.11.2017    source источник
comment
Grid панель всегда имеет тот же размер, что и родительская, если вы не укажете размер. Вы можете проверить это, установив цвет Background на свой Grid.   -  person Vijay Nirmal    schedule 24.11.2017
comment
Какой цели служит theStackPanel? У него только один ребенок.   -  person Peter Torr - MSFT    schedule 24.11.2017


Ответы (1)


StackPanel по умолчанию принимает размер, необходимый для его содержимого, и сжимается до требуемого размера, в то время как контейнерный элемент управления, такой как Grid, растягивается до полного доступного размера (например, на всю страницу).

Если вы хотите сохранить внешний StackPanel, вам нужно установить VerticalAlignment="Stretch" на StackPanel, а не на Grid.

Но поскольку Grid - единственный элемент содержимого во внешнем StackPanel, вы можете удалить его и переместить свойства Grid.RowSpan="4" Background="#CFFF" Visibility="Visible" в Grid. Всегда старайтесь, чтобы ваша структура XAML была как можно более простой.

person Bart    schedule 26.11.2017