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