0

我正在使用以下内容Popup,默认情况下位于屏幕的左上角。我希望能够在我的视图中居中,以便我可以将其拉伸到屏幕的宽度和高度并更改不透明度。我希望用户能够在弹出窗口显示在屏幕上时看到它背后的内容,但也让弹出窗口覆盖所有内容。到目前为止我所拥有的如下

<Grid x:Name="filterGrid">
                <Popup x:Name="trialPopup" HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="0.5">
                    <Border Margin="3" BorderBrush="{StaticResource PhoneForegroundBrush}">
                            <StackPanel Background="#FF1BA1E2">
                            <TextBlock x:Name="modeTextBlock" HorizontalAlignment="Center"/>
                            <TextBlock Text="Do you wish to purchase the application?" TextWrapping="Wrap" HorizontalAlignment="Center"/>
                                <Grid Margin="0,10" >
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width=".5*"/>
                                    <ColumnDefinition Width=".5*"/>
                                </Grid.ColumnDefinitions>
                                    <Button x:Name="purchaseButton" Grid.Column="0" Content="purchase" Click="popupButton_Click"/>
                                    <Button x:Name="cancelButton" Grid.Column="1" Content="cancel" Click="popupButton_Click"/>
                                </Grid>
                            </StackPanel>
                    </Border>
                </Popup>
            </Grid>

每当我尝试设置元素时Width="Center",如下所示Height="Center"Popup

<Popup x:Name="trialPopup" HorizontalAlignment="Center" VerticalAlignment="Center">

左上角是居中的,因此弹出窗口不在控件本身的中间。有没有办法根据弹出窗口的宽度和高度以及页面的宽度和高度来计算正确的尺寸并相应地应用它?或者有没有办法在 XAML 中正确执行此操作?另外,没有设置不透明度值?

4

2 回答 2

1

页面中心:

<Popup PlacementTarget="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}}}" Placement="Center" />

窗口中心:

<Popup PlacementTarget="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" Placement="Center" />
于 2015-09-05T18:11:55.340 回答
0

尝试使用 Popup 的 Offset 属性:

trialPopup.VerticalOffset = - ((FrameworkElement)trialPopup.Child).ActualHeight / 2;
trialPopup.HorizontalOffset = -((FrameworkElement)trialPopup.Child).ActualWidth / 2;

当为 Popup.Child 设置不透明度时,它会起作用,但我不知道为什么它在 Popup 上不起作用。

于 2013-10-12T19:21:33.763 回答