25

从 Expression Blend 3 回到 Visual Studio 时,我经常看到 Blend 在我的 XAML 中添加了一个“d:LayoutOverrides”属性。与 ASP.NET 设计师一起长大,我自然而然地不信任我不会自己输入的任何内容,因此我一看到它们就将它们删除。

我知道“d:”属性是设计器专用的,不会影响运行时,但是任何人都可以提供任何关于这个属性的作用以及为什么 Blend 会如此坚持以至于我将它们全部包含在我的标记中的见解吗?

<Border d:LayoutOverrides="Height" />
4

2 回答 2

33

就在那里,Blend 知道如何在设计模式下显示您的 XAML。具体来说,如果你有一个流畅的布局来填充它的容器,那么 Blend 没有明确的方法来知道你的设计应该有多高。LayoutOverrides 定义了这一点。

当您(或运行 Blend 的其他人)手动调整设计图面中元素的大小时,会添加这些 LayoutOverride 设置条目。如果您在整个代码中都看到它们(例如在 Border 元素中):

  1. 您通常可以在没有任何明显影响的情况下删除它们
  2. 您可能会查看如何使用 Blend - 具体来说,您应该将父容器调整为合适的大小(UserControl / LayoutRoot),然后根据流体布局设置子大小 - 例如填充和边距或 * 大小

请注意,Blend 的可忽略属性在编译时被去除,并且不会影响应用程序的性能。因此,虽然您可能希望删除它们以提高代码可读性,但它们不会影响您的应用程序的运行方式。

于 2009-09-11T16:03:08.970 回答
2

d:LayoutOverrides

如果某个属性在运行时设置为固定值,但您想在设计时覆盖它,则可以使用 d:LayoutOverrides 属性。可以列出在设计时应忽略的所有属性,用分号分隔。

(来源:http ://wpftutorial.net/DesigntimeVsRuntime.html )

于 2012-07-02T00:07:35.250 回答