我正在尝试创建一个包含大量TextBlocks,TextBox&Butses和Buttons的自定义对话框。经过一番研究,我已经实施了一个“弹出式”游戏。我的网格中有一些我的表单UI。
如何将弹出对话框置于页面中心。我尝试过使用horizontalOffset和VerticalOffset,但仍然会在我用来填充弹出窗口的按钮下面填充弹出窗口。
如果你可以指导我朝正确的方向发展,我还有两个问题:
提前致谢 饶
MainPage.xaml中
<Button
x:Name="bFour"
Content="Popup with buttons and text"
Height="75" FontSize="32"
Click="bFour_Click"/>
<Popup x:Name="Popup1"
IsOpen="False"
LayoutUpdated="Popup1_LayoutUpdated"
HorizontalAlignment="Center"
VerticalAlignment="Top">
<StackPanel Background="Blue"
Width="5000"
Height="5000">
<TextBlock Text="One" FontSize="54"/>
<TextBlock Text="Two" FontSize="54"/>
<Button x:Name="bClosepopup" Content="Close Popup" Click="bClosepopup_Click"/>
</StackPanel>
</Popup>
MainPage.xaml.cs中
private void bFour_Click(object sender, RoutedEventArgs e)
{
//Popup1.HorizontalOffset = r.Next(100, 100);
//Popup1.HorizontalOffset = (Window.Current.Bounds.Width - gdMain.ActualWidth) / 2;
//Popup1.VerticalOffset = (Window.Current.Bounds.Height - gdMain.ActualHeight) / 2;
//Popup1.Height = ActualHeight;
//Popup1.Width = ActualWidth;
Popup1.IsOpen = true;
}
private void Popup1_LayoutUpdated(object sender, object e)
{
if (gdMain.ActualWidth == 0 && gdMain.ActualHeight == 0)
{
return;
}
double ActualHorizontalOffset = this.Popup1.HorizontalOffset;
double ActualVerticalOffset = this.Popup1.VerticalOffset;
double NewHorizontalOffset = (Window.Current.Bounds.Width - gdMain.ActualWidth) / 2;
double NewVerticalOffset = (Window.Current.Bounds.Height - gdMain.ActualHeight) / 2;
if (ActualHorizontalOffset != NewHorizontalOffset || ActualVerticalOffset != NewVerticalOffset)
{
this.Popup1.HorizontalOffset = NewHorizontalOffset;
this.Popup1.VerticalOffset = NewVerticalOffset;
}
}
答案 0 :(得分:0)
我认为你缺少2个属性:
尝试使用它们,看看结果是否更好。
编辑1:
不幸的是,Windows应用程序中的Popups与普通的WPF应用程序没有相同的属性。这是documentation。弹出窗口似乎不是实现您想要做的事情的正确方法。
对于另外两个问题:
这是在Windows应用中填充自定义对话框的正确方法吗? (对于平板电脑)?
请参阅以下documentation。
如何重用其他页面的弹出窗口?
我建议您使用MVVM Light和MVVM Messenger来触发主页上的弹出窗口。 MVVM Light Toolkit Fundamentals