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