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