在Win 8 Store XAML应用程序中显示用户输入的对话框

时间:2012-11-18 01:01:44

标签: windows-8 windows-runtime winrt-xaml

有没有办法在Win 8商店XAML应用程序中实现类似Dialog的效果;类似于指示in this post的那个,其中对话框的内容是用于收集用户输入的自定义控件。

以下是我想要显示的一些示例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内容居中,它显示在顶部,并且没有按照我的意愿居中和拉伸。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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中以使其居中。