Я открываю всплывающее окно в моем 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;
}