当我将控件从工具箱拖到 Visual Studio 2008 WPF 设计图面上时,它会根据我放置它的位置和默认大小来设置边距。
有什么办法可以防止 VS 设置这些?当我将控件放在堆栈面板上时,我希望它流入面板中的现有控件。
谢谢!
当我将控件从工具箱拖到 Visual Studio 2008 WPF 设计图面上时,它会根据我放置它的位置和默认大小来设置边距。
有什么办法可以防止 VS 设置这些?当我将控件放在堆栈面板上时,我希望它流入面板中的现有控件。
谢谢!
我从来没有找到防止这种情况的方法。我只是键入 XAML。
编辑:
以上是我将近三年前写的。与此同时,设计时体验似乎变得更好了。
虽然如果您拖放,设计师仍然会添加硬编码的边距,但有一些方法可以删除这些边距,而无需手动操作。
这是一篇文章的链接,该文章说明了如何使用 Visual Studio 2010 中的设计工具来布置表单,而无需键入任何 XAML。(尽管有标题,但它是关于 WPF 的。)
文章的第一部分显示了硬编码的像素,但我已经链接到第二部分,它显示了如何在没有硬编码的情况下布置控件。
当我将控件放入堆栈面板时,它不会添加边距,而是与其余部分一起“流入”。
默认情况下,您放置在设计图面上的控件有一个边距,因为这就是它知道放置位置的方式。我通常做的是创建一个网格并将它的边距设置在我想要的位置,然后创建列和行以将控件放入其中。我加入了其他控件,这将添加通常不是我想要的边距。在将所有控件放入网格并合理放置后,我切换到 XAML 视图并完全删除边距(这会导致像按钮一样的控件填充整个空间),或者将边距设置为 5,这样可以放置一些控件周围有很好的填充。
底线...对于 Silverlight 开发尤其如此,您必须习惯于直接操作 XAML。这是您在所需位置获得布局的唯一方法。这是我的意见,也是我店里大多数从事 WPF/silverlight 开发的人的意见。
不幸的是,似乎没有办法做到这一点。
默认大小设置为您操纵控件大小的结果是设计器。当您增加控件的宽度和/或高度时,设计人员会将您的操作解释为使控件具有指定宽度和/或高度的请求。
边缘也遇到了类似的情况。当您更改控件在设计器中的位置时,它会修改属性以实现您创建的布局。在大多数容器的情况下,最简单的解决方案是修改边距以达到所需的位置,正如您已经指出的那样,简单的解决方案并不总是最理想的。
就我个人而言,我更喜欢只使用 XAML 编辑器,并且当我想查看当前布局时,偶尔会在 WPF 设计器中使用高峰。我也倾向于使用 Grid 来布局我的大部分窗口/控件,因为它不仅为大小和定位提供了最大的灵活性,而且还为其他任务/功能(如动画、变换等)提供了最大的灵活性。