1

有没有办法在 Win 8 Store XAML 应用程序中实现类似对话框的效果;与本文中指出类似,其中对话框的内容是用于收集用户输入的自定义控件。

这是一些示例 XAML 内容,我想以类似于上面帖子中所示的内容居中显示。

<common:LayoutAwarePage
x:Class="App1.UserControls.Control1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
mc:Ignorable="d"
>

<Grid HorizontalAlignment="Stretch" Background="Gold" VerticalAlignment="Center">
    <StackPanel  VerticalAlignment="Center" HorizontalAlignment="Center" AreScrollSnapPointsRegular="True" Margin="20">
        <TextBlock Text="This is sample text" FontSize="20" Style="{StaticResource HeaderTextStyle}"/>            
        <Button Content="Close" Click="btnClose_Click" Margin="0,20,0,0" HorizontalAlignment="Right"/>
    </StackPanel>
</Grid></common:LayoutAwarePage>

我正在使用 Popup 控件从主页中显示它,如下所示:

<common:LayoutAwarepage>
<Grid Style="{StaticResource LayoutRootStyle}">
   <Popup x:Name="ParentedPopup" VerticalOffset="300" HorizontalOffset="200" 
    HorizontalAlignment="Stretch">
            <usercontrols:CreateCategory/>
   </Popup>
 </Grid>
<Page.BottomAppBar>
    <AppBar x:Name="bottomAppBar" Padding="10,0,10,0">
        <Grid>
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                <Button Style="{StaticResource AddAppBarButtonStyle}" Click="AddButton_Click"/>

            </StackPanel>
        </Grid>
    </AppBar>
</Page.BottomAppBar></common:LayoutAwarePage>
private void AddButton_Click(object sender, RoutedEventArgs e)
{
    if (!ParentedPopup.IsOpen) { ParentedPopup.IsOpen = true; }
}

但是,这并没有像我想要的那样显示,弹出窗口没有显示 xaml 内容居中,它显示在顶部并且没有像我想要的那样居中和拉伸。

有没有一种简单的方法可以实现这一目标?注意:我不想依赖任何库。

4

2 回答 2

1

如果它们解决了您的问题,为什么您不想依赖任何二进制文件?看看Callisto,它有一个 CustomDialog 可以为您执行此操作,如文档中所示 - https://github.com/timheuer/callisto/wiki/CustomDialog。它是开源的,因此您也可以使用源代码。但是您要么依赖某人对您的代码回答,要么依赖二进制文件:-)

于 2013-08-15T04:17:54.597 回答
0

将垂直偏移分配给屏幕的高度

popup.VerticalOffset = (Window.Current.Bounds.Height / 2) - popup.ActualHeight / 2;
Width = Window.Current.Bounds.Width;

VerticalAlignment="Center";

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" x:Name="ContentColumn"/>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>

//Place content in "ContentColumn" to center it
<Grid>

把内容放在ContentColumn中心。

于 2012-11-18T03:12:46.843 回答