用showDialog打开窗口,TextBlock显示在窗口下面而不是文本

时间:2012-03-28 15:23:55

标签: c# wpf textblock showdialog

我有这个奇怪的wpf问题。 我有一个带有图像的窗口(全屏幕),看起来像这样: enter image description here

我打开一个带有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;

我得到这样的东西(我裁剪它,窗口稍大): enter image description here

文本块的定义如下:

            <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";

但不是我所期望的(文本会改变)我得到了这个奇怪的东西: enter image description here 正如您所看到的,后窗口中的图像被轻轻显示,而不是我的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}"/>

2 个答案:

答案 0 :(得分:0)

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

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

2)缩短你的通话方法:

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

3)将RectangleTextBlock放入<StackPanel>或其他容器中。可能是这些控件重叠的问题,因为生活在Grid中。

答案 1 :(得分:0)

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