0

我有这个奇怪的 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";

但是我得到了这个奇怪的东西,而不是我所期望的(文本会改变): 在此处输入图像描述 如你所见,后窗的图像被轻微显示,而不是我的文本块!

这是怎么回事?请帮忙!

弹出 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}"/>
4

2 回答 2

0

您可以尝试Visible在您的主表单上将属性设置为 false,然后在您的ShowDialog?

于 2012-05-25T14:11:09.370 回答
0

一些建议:
1)删除您的代码以在所有者中心打开窗口,只需在您的WindowXAML 中使用它:

<Window ....
    WindowStartupLocation="CenterOwner">

2)缩短你的调用方法:

Window next = new PasswordVerification {Owner = this};
next.ShowDialog();

3) 将您的RectangleandTextBlock放入<StackPanel>或其他容器中。这些控件重叠的问题可能是因为位于 Grid 内部。

于 2012-03-29T15:11:13.947 回答