窗口样式和使用控件(C#和WPF)

窗口样式和使用控件(C#和WPF),c#,wpf,windows,xaml,window,C#,Wpf,Windows,Xaml,Window,我正在使用Visual Studio 2013创建我的应用程序。我四年前开始学习编程,现在我想提高我的编程经验 在过去的几天里,我不得不创建一个简单的应用程序,但我不想使用默认样式的窗口。所以我读到我可以为我的窗口创建一个样式。我做到了,效果很好,但有一个小问题:我现在不能把任何东西放进我的窗户里。。。我放在网格、窗口标记中的所有控件都不可见,但编译器没有显示任何问题 下面是样式代码,然后是我的窗口XAML <Style TargetType="Window" x:Key="Default

我正在使用Visual Studio 2013创建我的应用程序。我四年前开始学习编程,现在我想提高我的编程经验

在过去的几天里,我不得不创建一个简单的应用程序,但我不想使用默认样式的窗口。所以我读到我可以为我的窗口创建一个样式。我做到了,效果很好,但有一个小问题:我现在不能把任何东西放进我的窗户里。。。我放在网格、窗口标记中的所有控件都不可见,但编译器没有显示任何问题

下面是样式代码,然后是我的窗口XAML

<Style TargetType="Window" x:Key="DefaultWindow">
        <Setter Property="AllowsTransparency" Value="True"/>
        <Setter Property="WindowStyle" Value="None"/>
        <Setter Property="ResizeMode" Value="CanResizeWithGrip"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Window}">                       
                    <Border BorderThickness="1" BorderBrush="Black">
                        <Border BorderThickness="3" BorderBrush="#FF244E97">
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="50"></RowDefinition>
                                    <RowDefinition></RowDefinition>
                                </Grid.RowDefinitions>

                                <Grid Grid.Row="0" Background="#FF244E97">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition></ColumnDefinition>
                                        <ColumnDefinition Width="Auto"></ColumnDefinition>
                                    </Grid.ColumnDefinitions>

                                    <Viewbox Grid.Column="0" Grid.Row="0" Stretch="Uniform" HorizontalAlignment="Left" Margin="10">
                                        <TextBlock FontFamily="Corbel" Background="#FF244E97" Foreground="White">Costo Unitario</TextBlock>
                                    </Viewbox>

                                    <Grid Grid.Column="1">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition></ColumnDefinition>
                                            <ColumnDefinition></ColumnDefinition>
                                            <ColumnDefinition></ColumnDefinition>
                                        </Grid.ColumnDefinitions>

                                        <Viewbox Grid.Column="0" Stretch="Uniform" HorizontalAlignment="Left" Margin="2, 10, 2, 10">
                                            <TextBlock FontFamily="Corbel" Background="#FF244E97" Foreground="White">_</TextBlock>
                                        </Viewbox>

                                        <Viewbox Grid.Column="1" Stretch="Uniform" HorizontalAlignment="Left" Margin="2, 10, 2, 10">
                                            <TextBlock FontFamily="Corbel" Background="#FF244E97" Foreground="White">◘</TextBlock>
                                        </Viewbox>

                                        <Viewbox Grid.Column="2" Stretch="Uniform" HorizontalAlignment="Left" Margin="2, 10, 20, 10">
                                            <TextBlock FontFamily="Corbel" Background="#FF244E97" Foreground="White">X</TextBlock>
                                        </Viewbox>

                                    </Grid>

                                </Grid>

                                <Grid x:Name="ContenentGrid" Grid.Row="1" Background="White">
                                    <ResizeGrip Width="10" Height="10" Grid.Column="1" VerticalAlignment="Bottom"/>
                                </Grid>

                            </Grid>                                                             
                        </Border>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

科斯托尤尼亚里奥酒店
_
◘
X
以及我的Windows Xaml:

<Window x:Class="Pabich.Marcin._5HI.CostoUnitario.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:chrt="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
    Title="MainWindow" Height="600" Width="800" WindowStartupLocation="CenterScreen"
    Style="{StaticResource DefaultWindow}">

<Grid>
    <TextBlock>Hello!</TextBlock>
</Grid>

你好

这应该是一个无边框窗口,在我可以放置控件的范围内,在中央网格中。这是当前窗口的一个屏幕:

正如你所看到的,我为我的控件留下了所有空白,但它们不在那里。那我怎么才能做到呢


PS:请记住,我只是一个初学者,我只想使用简单的代码,因为你不需要显示窗口内容。没有ContentPresenter,WPF内容模型不知道内容应该放在哪里,也不显示内容

尝试将ContentPresenter添加到ContentGrid(WPF窗口在AdornerDecorator中也需要它)


... 调整夹点的大小。。。

您的模板正在设置边框,您在该模板中指定的所有内容都是边框的一部分,包括带有x:Name=“ContentGrid”的网格。我认为您的边框可能正在填充屏幕,而内容(您好!)就在屏幕下方,并且位于可见区域的底部。将ContentGrid背景设置为红色,然后查看它的外观。是的,它可以工作。这就是我问题的解决办法。非常感谢。不客气!我很高兴我的回答对你有帮助。请把我的答案标记为正确答案,以便其他人能看到。
<Grid x:Name="ContenentGrid" Grid.Row="1" Background="White">
    <AdornerDecorator>
       <ContentPresenter Content="{TemplateBinding Content}" />
    </AdornerDecorator>
    ... ResizeGrip here ...
</Grid>