XAML Высота всплывающего окна неверна при первом открытии - PullRequest
0 голосов
/ 18 октября 2019

Я открываю всплывающее окно в моем XAML. Когда я нажимаю кнопку, чтобы открыть ее в первый раз, высота, кажется, составляет всего около 50 пикселей. Когда я открываю его 2-й (и все остальные времена), он открывается на правильную высоту. Может ли кто-нибудь объяснить, что я делаю (или не делаю), чтобы он открывался на неправильную высоту в первый раз, и помог мне заставить его открыться правильно в первый раз?

С событием MyPopupOpened являетсяпопытаться центрировать всплывающее окно на представлении при его открытии.

Редактировать Мой TestGridContainer находится в отдельном элементе управления, который содержится в MainWindow моего приложения.

2nd Edit Всплывающее окно открывается только на неправильной высоте, когда приложение развернуто. В противном случае он открывается в размере, который он должен.

<Grid Name="TestGridContainer">
    <StackPanel Orientation="Horizontal" Margin="0">
        <ToggleButton Command="{Binding ShowPopupCommand}" Content="Toggle Popup Visibility" />
    </StackPanel>
    <Popup Name="MyPopup"
           IsOpen="{Binding IsTestResultsPopupDialogVisible}" 
           PopupAnimation="Fade"
           AllowsTransparency="True"
           VerticalAlignment="Top"
           Width="400"
           Opened="MyPopup_Opened">
        <Border CornerRadius="8" Background="DarkGray" Padding="2,0,2,2">
            <Border CornerRadius="8" Background="#FFEEEEEE" Padding="2" Margin="-2,0,0,0">
                <Grid x:Name="PopupGrid">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="500" />
                    </Grid.RowDefinitions>
                    <Border Grid.Row="0" BorderBrush="Gray" BorderThickness="0,0,0,3" Background="Green">
                        <TextBlock Text="My Popup" FontWeight="Bold" FontSize="32" Height="500" HorizontalAlignment="Center" />
                    </Border>
                </Grid>
            </Border>
        </Border>
    </Popup>
</Grid>

Код позади

    private void MyPopup_Opened(object sender, EventArgs e)
    {
        MyPopup.HorizontalOffset = (TestGridContainer.ActualWidth - PopupGrid.ActualWidth) / 2;
        MyPopup.VerticalOffset = (TestGridContainer.ActualHeight - PopupGrid.ActualHeight) / 2;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...