C# 使用showDialog打开的窗口,TextBlock显示在窗口下方,而不是文本
我有一个wierd wpf问题。 我有一个带有图像的窗口(全屏幕),如下所示: 我在这个窗口上用Showdialog打开一个新窗口,它不是全屏的(看起来像一个弹出窗口,但它是一个窗口)。代码如下所示:C# 使用showDialog打开的窗口,TextBlock显示在窗口下方,而不是文本,c#,wpf,textblock,showdialog,C#,Wpf,Textblock,Showdialog,我有一个wierd wpf问题。 我有一个带有图像的窗口(全屏幕),如下所示: 我在这个窗口上用Showdialog打开一个新窗口,它不是全屏的(看起来像一个弹出窗口,但它是一个窗口)。代码如下所示: Window next; next = new PasswordVerification(); next.Owner = this; next.ShowDialog(); <Rectangle Name="errorBorder" Fill="#34FF
Window next; next = new PasswordVerification();
next.Owner = this;
next.ShowDialog();
<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" />
在打开的窗口中,我使用此选项将“弹出窗口”居中:
我得到了这样的东西(我裁剪了它,窗口稍微大一些):
其中textblock的定义如下:
Window next; next = new PasswordVerification();
next.Owner = this;
next.ShowDialog();
<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" />
但是,与我预期的(文本将发生变化)不同,我得到的是以下内容:
如您所见,后窗的图像显示得很模糊,而不是我的文本块
这是怎么回事?请帮帮我
弹出的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}"/>
几点建议:1) 删除代码以打开位于所有者中心的窗口,只需在
窗口中使用此代码即可
<Window ....
WindowStartupLocation="CenterOwner">
3) 将矩形
和文本块
放入
或其他容器中。可能是这些控件重叠的问题,因为它们位于网格内。您是否可以尝试在主窗体上将Visible
属性设置为false,然后在ShowDialog
之后将其设置回true?刚刚制作了一个简单的应用程序,试图重现您的行为,但它按预期工作。从图片判断,我假设PasswordVerification窗口有一些修改,使其看起来像一个弹出窗口。你能给我看看吗?或者关闭它们来缩小问题?是的。我编辑我的帖子,我会添加一些xaml1缺失的代码。2不是必需的,因为我的代码有点长,为了方便起见,我在这里简化了它。我试试3Ah,看。看起来在可视化树中出现了一些问题。您是否尝试从窗口XAML中删除AllowTransparency=“True”,或从代码隐藏中删除此.Topmost=True(我认为这是不必要的,因为模态对话框已经位于顶部)。
Window next = new PasswordVerification {Owner = this};
next.ShowDialog();