C#WPF窗口不显示元素

时间:2017-02-19 23:09:59

标签: c# wpf xaml

我在Visual Studio中玩WPF,我有这个奇怪的问题。我制作了一个大约占主窗口50%的网格。这个网格将是我的俄罗斯方块游戏发生的地方。在窗口Id的另一半上,要显示标记显示得分等。但没有任何东西出现,只有网格内容。有谁知道可能导致这个问题的原因是什么? 继承我的xaml代码:

<Window x:Class="Tetris_Final.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Tetris_Final"
    mc:Ignorable="d"
    Title="MainWindow" Height="500" Width="500" KeyDown="Window_KeyDown">
<Grid x:Name="GridPlayBoard" Width="255" Height="405
      " HorizontalAlignment="Left" VerticalAlignment="Top" Margin="5,5,0,0">
    <Button x:Name="button" Content="Start game!" HorizontalAlignment="Left" Margin="337,148,-177,0" VerticalAlignment="Top" Width="95" Height="48"/>
    <Label x:Name="label" Content="Label" HorizontalAlignment="Left" Margin="337,48,-214,0" VerticalAlignment="Top" Width="132" Height="42"/>
</Grid>

1 个答案:

答案 0 :(得分:1)

您的按钮和标签位于网格内。你应该制作一个外部网格来容纳你的所有元素并将游戏板网格放入其中。然后使用其他类型的网格或面板来控制按钮和标签的布局。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid x:Name="GridPlayBoard" Grid.Column="0"
          Width="255" Height="405" 
          HorizontalAlignment="Left" VerticalAlignment="Top" Margin="5,5,0,0">
        <!--put your game here-->
    </Grid>
    <StackPanel Orientation="Vertical" Grid.Column="1">
        <Button x:Name="button" Content="Start game!" 
                HorizontalAlignment="Left" VerticalAlignment="Top" Width="95" Height="48"/>
        <Label x:Name="label" Content="Label" HorizontalAlignment="Left" VerticalAlignment="Top" Width="132" Height="42"/>
    </StackPanel>
</Grid>

<强>更新

顺便说一句,您可能不应该内联指定样式属性,因为它会导致大量重复。最好为整个窗口指定一次。

<Window.Resources>
    <Style TargetType="Button">
        <Setter Property="Width" Value="95"/>
        <Setter Property="Height" Value="48"/>
    </Style>
</Window.Resources>   

更好的是,如果在多个窗口上使用相同的样式,请使用资源文件。

https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/resourcedictionary-and-xaml-resource-references