我有这个奇怪的wpf问题。 我有一个带有图像的窗口(全屏幕),看起来像这样:
我打开一个带有Showdialog的新窗口,这个窗口不是全屏(看起来像弹出窗口,但它是一个窗口)。代码是这样的:
Window next; next = new PasswordVerification();
next.Owner = this;
next.ShowDialog();
在打开的窗口上我使用它来居中“弹出窗口”:
this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth) / 2;
this.Top = this.Owner.Top + (this.Owner.Height - this.ActualHeight) / 2;
this.Topmost = true;
我得到这样的东西(我裁剪它,窗口稍大):
文本块的定义如下:
<Rectangle Name="errorBorder" Fill="#34FF0000" FlowDirection="RightToLeft" RadiusX="13" RadiusY="13" Stroke="#FFB80005" Visibility="Visible" Margin="43,195,78,203" />
<TextBlock Name="error" Text="TextBlock" Margin="49,195,91,205" FontSize="20" FlowDirection="RightToLeft" FontWeight="Bold" Foreground="#FFB80000" Visibility="Visible" />
现在我有一个按钮,就是这样:
error.Text = "blabla";
但不是我所期望的(文本会改变)我得到了这个奇怪的东西: 正如您所看到的,后窗口中的图像被轻轻显示,而不是我的textBlock!
这里发生了什么?请帮助!
PopUp XAML:
<Window ... Width="1000" Height="700" AllowsTransparency="True"
WindowStyle="None"
Background="#00000000"/>
<Border Style="{StaticResource SmallScreenBorderStyle}" CornerRadius="23" Padding="2" Margin="153.66,117.992,153.661,117.992" d:LayoutOverrides="Width, Height">
<!-- Use a VisualBrush of 'mask' as the opacity mask -->
<Grid.OpacityMask>
<VisualBrush Visual="{Binding ElementName=mask}"/>
</Grid.OpacityMask>
<!-- Rounded mask (stretches to fill Grid) to make grid rounded corners -->
<Border x:Name="mask" CornerRadius="20" Margin="2,5,-1,-5" d:LayoutOverrides="GridBox" Style="{StaticResource MaskBorderStyle}"/>
答案 0 :(得分:0)
很少有建议:
1)删除您的代码以打开所有者中心的窗口,只需在Window
XAML中使用它:
<Window ....
WindowStartupLocation="CenterOwner">
2)缩短你的通话方法:
Window next = new PasswordVerification {Owner = this};
next.ShowDialog();
3)将Rectangle
和TextBlock
放入<StackPanel>
或其他容器中。可能是这些控件重叠的问题,因为生活在Grid中。
答案 1 :(得分:0)
您可以尝试在主表单上将Visible
属性设置为false,然后在ShowDialog
之后将其设置为true吗?