有没有办法在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内容居中,它显示在顶部,并且没有按照我的意愿居中和拉伸。
有没有简单的方法来实现这一目标? 注意:我不想依赖任何库。
答案 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
中以使其居中。