2012-03-28 76 views
0

我有这个奇怪的wpf问题。 我有一个窗口(全screennm)与影像,看起来是这样的: enter image description here用showDialog打开窗口,TextBlock显示窗口下方而不是文本

我打开一个新的窗口,ShowDialog的uppon这个窗口,这是不是全屏(看起来像一个弹出窗口,但它的一个窗口) 。代码是这样的:

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 正如你可以看到,从后面的图像窗口是slrtly显示,而不是我的textBlock!

这是怎么回事??请帮助!

弹出的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

只是做了一个简单的应用程序,试图重现您的行为,但它按预期工作。从图片来看,我认为PasswordVerification窗口有一些修改使它看起来像一个弹出窗口。你可以展示这些吗?或者切断它们以缩小问题的范围? – SvenG 2012-03-29 07:13:29

+0

是的。我编辑我的帖子,我将添加一些xaml – Programer 2012-03-29 14:22:42

回答

0

几点建议:
1)删除您的代码在主人的中心开设窗口,只需在您的Window XAML使用:

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

2)缩短您的通话方式:

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

3)把y我们的RectangleTextBlock<StackPanel>或其他容器。可能是这些控件因Grid内部生活而重叠的问题。

+0

1是缺少代码。因为我的代码有点长,所以我并没有将其限制为2,为了方便起见,我在这里简化了它。我会尝试3 – Programer 2012-03-29 15:14:24

+0

我修复了帖子:) – asktomsk 2012-03-29 15:17:10

+0

3是不好的,因为我需要他们在互相 – Programer 2012-03-29 15:28:26

0

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

相关问题