XAML中的中心弹出窗口
发布时间:2020-12-14 02:54:20 所属栏目:Windows 来源:网络整理
导读:我使用以下代码创建了一个Popup,但我无法弄清楚如何将它居中 我试图在运行时自动更改边距,但我无法弄清楚如何做到这一点,但有人知道如何将弹出窗口居中吗? 它没有标准维度原因我需要全球化我的程序 Grid Background="{StaticResource ApplicationPageBackgr
我使用以下代码创建了一个Popup,但我无法弄清楚如何将它居中
我试图在运行时自动更改边距,但我无法弄清楚如何做到这一点,但有人知道如何将弹出窗口居中吗? 它没有标准维度原因我需要全球化我的程序 <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" Name="MainGrid"> <Popup x:Uid="LoginPopup" IsOpen="True" Name="LoginPopup"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock Margin="10" Grid.Column="0" Grid.Row="0" Text="App Name" Grid.ColumnSpan="2" Style="{StaticResource HeaderTextStyle}" /> <TextBlock Margin="10" Grid.Column="0" Grid.Row="1" Text="Username" Style="{StaticResource ResourceKey=SubheaderTextStyle}" /> <TextBox Margin="10" Grid.Column="1" Grid.Row="1" Name="InputUsername" /> <TextBlock Margin="10" Grid.Column="0" Grid.Row="2" Text="Password" Style="{StaticResource ResourceKey=SubheaderTextStyle}" /> <PasswordBox Margin="10" Grid.Column="1" Grid.Row="2" Name="InputPassword" /> <StackPanel Margin="10" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" Orientation="Horizontal"> <Button Name="Login" x:Uid="LoginPopupLogin" /> <Button Name="Cancel" x:Uid="LoginPopupCancel" /> </StackPanel> </Grid> </Popup> </Grid> UPDATE 我尝试了下面的user1603313的答案,但它没有做到这一点,因为它说弹出窗口内的网格大小是NaN. private void LoginPopup_Loaded_1(object sender,RoutedEventArgs e) { LoginPopup.HorizontalOffset = (Window.Current.Bounds.Width - gdChild.ActualWidth) / 2; LoginPopup.VerticalOffset = (Window.Current.Bounds.Height - gdChild.ActualHeight) / 2; } 解决方法
这是解决问题的方法.我正在重写xaml代码以及修改,你可以在代码后找到解释.
<Popup x:Uid="LoginPopup" IsOpen="True" Name="LoginPopup" Loaded="LoginPopup_Loaded_1"> <Grid Background="Red" x:Name="gdChild" Height="Auto" Width="Auto"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock Margin="10" Grid.Column="0" Grid.Row="0" Text="App Name" Grid.ColumnSpan="2" Style="{StaticResource HeaderTextStyle}" /> <TextBlock Margin="10" Grid.Column="0" Grid.Row="1" Text="Username" Style="{StaticResource ResourceKey=SubheaderTextStyle}" /> <TextBox Margin="10" Grid.Column="1" Grid.Row="1" Name="InputUsername" /> <TextBlock Margin="10" Grid.Column="0" Grid.Row="2" Text="Password" Style="{StaticResource ResourceKey=SubheaderTextStyle}" /> <PasswordBox Margin="10" Grid.Column="1" Grid.Row="2" Name="InputPassword" /> <StackPanel Margin="10" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" Orientation="Horizontal"> <Button Name="Login" x:Uid="LoginPopupLogin" /> <Button Name="Cancel" x:Uid="LoginPopupCancel" /> </StackPanel> </Grid> </Popup> 在这里,我将一个事件Loaded =“LoginPopup_Loaded_1”添加到弹出窗口的xaml中 这是C#中的事件代码 private void LoginPopup_Loaded_1(object sender,RoutedEventArgs e) { LoginPopup.HorizontalOffset = (Window.Current.Bounds.Width - gdChild.ActualWidth) / 2; LoginPopup.VerticalOffset = (Window.Current.Bounds.Height - gdChild.ActualHeight) / 2; } 说明: Horizo??ntalOffset获取应用程序窗口左侧与弹出窗口左侧之间的距离. 类似地,垂直偏移量获得窗口顶部和弹出窗口顶部之间的距离 因为我们必须将它对齐,所以我们必须从应用程序窗口的宽度和高度中减去弹出窗口的宽度和高度的一半(弹出窗口的中心是弹出窗口距离它的顶部和左边界的一半) ) 代码是用Loaded =“LoginPopup_Loaded_1”事件编写的,因为当在应用程序窗口中呈现元素时会调用此事件并且因为它是所有子元素的容器Grid而被占用Grid. 我希望很清楚:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2003 – 在AD中委派帐户解锁权限
- active-directory – “dsquery computer -inactive x”忽略
- Windows 2008 R2防火墙,允许被ping的设置方法
- Windows – 如何使用批处理脚本从.properties文件读取
- 触发Windows UAC提示时是否有WinAPI消息?
- 为什么要在Windows服务中托管wcf服务?
- Windows下使用TortoiseGit的无法直接使用linux ssh-key的解
- Windows下代替自带cmd的开源软件cmder
- windows-8 – 是否有免费的方式来分发免费的Windows 8应用程
- windows RDP远程代码执行_CVE-2019-0708漏洞复现
推荐文章
站长推荐
- active-directory – 如何手动恢复Windows 2000域
- windows – 如何获取JUnit版本
- 批处理文件 – 如何在Windows中连接两个文本文件
- 是否可以将Windows Server 2016 Datacenter降级为
- 为什么在Windows 8上忽略了SeCreateSymbolicLink
- 如何使用Windows身份验证与System.Data.OracleCl
- Windows – Active Directory用户和计算机上的Ac
- windows-8 – 用于图标的Segoe UI符号中的字形名
- Windows Server 2016-WinSer2016 Active Directo
- 如何使用Windows身份验证和强制加密设置为true连
热点阅读