2012-12-18 172 views
0

我是WPF的新手,已经用于winforms。我不明白为什么编译的输出和设计视图不一样。我觉得这有点烦人和误导。WPF在编译时不显示屏幕上显示的内容

添加元素时,我将它们对齐到红色边框,结果与我在编译窗口中看到的不一致。在winforms中,我习惯于使用表格布局,面板和对接和对齐项目。有没有在WPF这样做得到一致的结果的正确方法?

Designer View

的XAML

<Window x:Class="WpfApplication4.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="300" Margin="10,10,0,0" Stroke="Black" VerticalAlignment="Top" Width="497"/> 
    </Grid> 
</Window> 

The output

回答

2

在WPF大多数容器不具备的孩子位置的概念。相反,大多数控件使用诸如Margin,HorizontalAlignmentVerticalAlignment之类的属性来定义它们的布局。此外,特定容器提供不同的功能。如果你想要对接,你可以使用DockPanel。如果您想要堆叠元素,则可以使用StackPanel等。我建议你在网上查找一些教程,这是很多资源。

在你的情况,如果你希望你的控制完全填补其容器,将其从XAML代码MarginVerticalAlignmentHorizontalAlignmentWidthHeight属性。

+0

谢谢。我必须了解这些差异。我注意到的一件事是将SizeToContent设置为WidthAndHeight使窗口对齐到防止额外空白空间的项目。 – MCSharp

+0

一旦你习惯了它,你会发现它更直观,更强大的WPF/SL的方式。用锚和左/顶等手工定位事物只是一个记忆。相对布局还可确保在调整屏幕大小或在具有不同分辨率的设备上使用它时,您的应用可以很好地缩放 – Charleh