Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF文本覆盖网格_C#_Wpf_Xaml - Fatal编程技术网

C# WPF文本覆盖网格

C# WPF文本覆盖网格,c#,wpf,xaml,C#,Wpf,Xaml,我搜索了整个stackoverflow,找不到简单的解决方案 我有网格,我想用一些文本/图像覆盖整个网格。你知道我怎么做吗 实际上,这是一款俄罗斯方块游戏,我想在用户输后向他显示文本/图像“游戏结束”,所以我需要从c#手动完成。有什么想法吗 谢谢您的帮助:-) /Fonts/fontawesome webfont.ttf#fontawesome 赖特 使用网格,您只需添加占据相同空间的对象,它们将按照添加顺序重叠。在您的示例中,您有很多列和行,因此要覆盖所有列和行,您必须将它的RowSpan

我搜索了整个stackoverflow,找不到简单的解决方案

我有网格,我想用一些文本/图像覆盖整个网格。你知道我怎么做吗

实际上,这是一款俄罗斯方块游戏,我想在用户输后向他显示文本/图像“游戏结束”,所以我需要从c#手动完成。有什么想法吗

谢谢您的帮助:-)


/Fonts/fontawesome webfont.ttf#fontawesome
赖特

使用网格,您只需添加占据相同空间的对象,它们将按照添加顺序重叠。在您的示例中,您有很多列和行,因此要覆盖所有列和行,您必须将它的RowSpan和ColumnSpan设置为您拥有的行/列数,以便它填充所有空间

一种更简单的方法可能是将网格放在另一个网格中(只有一行和一列),并在其中添加一些内容(这就是我在覆盖组件时所做的,只需将它们粘贴在它们自己的小1x1网格中)

像这样:

<Grid>
    <Grid Name="MainGrid" Height="750" Width="375" DockPanel.Dock="Right">
        ... all those columns
    </Grid>
    <Border Name="GameOverlay" Background="Black" Visibility="Hidden">
        <TextBlock Text="Game Over!" Foreground="White" FontWeight="Bold"
                   FontSize="24"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"/>
    </Border>
</Grid>

... 所有那些专栏
请注意,如果您想隐藏原始内容(尽管半透明的背景可能看起来很酷!),那么为某些内容设置背景非常重要

要在代码中显示和隐藏它,只需使用
GameOverlay.Visibility=Visibility.Visibility
GameOverlay.Visibility=Visibility.Hidden
显示和隐藏它,或将其绑定到您可以更改的属性

通过这种方式,您可以使它看起来像您想要的那样,将它放置在您想要的位置,并将其设置为在设计器中可见,然后将其更改为隐藏(以便您可以使其在代码中可见)


比在需要时用代码构建并手动将其添加到用户体验要容易得多。

谢谢!你救了我一天,真的:-)我试过类似的东西,但我不知道为什么它不起作用。你的溶液很棒!没问题。您是否尝试将其添加到游戏网格,然后在代码中添加游戏元素?这将导致顺序混乱(它们是按照您添加它们的顺序绘制的)。可以使用Canvas.ZIndex强制绘制顺序。更容易,只要把它推到树上它自己的格子里就行了!此外,如果事情变化很快,通常更有效的方法是将事情隐藏起来,并在需要时显示出来。
<Grid>
    <Grid Name="MainGrid" Height="750" Width="375" DockPanel.Dock="Right">
        ... all those columns
    </Grid>
    <Border Name="GameOverlay" Background="Black" Visibility="Hidden">
        <TextBlock Text="Game Over!" Foreground="White" FontWeight="Bold"
                   FontSize="24"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"/>
    </Border>
</Grid>