为什么Blend添加[d:LayoutOverrides ="Height"]并且我应该关心吗?

Bra*_*row 23 silverlight xaml expression-blend

常常从Expression Blend的3回来到Visual Studio时,我看到共混物具有有益补充一个"d:LayoutOverrides"属性,我的XAML.在ASP.NET设计师的成长过程中,我自然不信任任何我不会打字的东西,所以一看到它就立即删除它们.

我知道"d:"属性只是设计师而且不会影响运行时,但任何人都可以提供任何有关此属性功能的信息以及为什么Blend如此坚持以至于我将它们全部放在我的标记上?

<Border d:LayoutOverrides="Height" />
Run Code Online (Sandbox Code Playgroud)

Jon*_*way 31

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

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

  1. 您通常可以删除它们而不会产生任何明显的影响
  2. 你可能会看看你如何使用Blend - 具体来说,你应该将父cotainer的大小调整到一个好的大小(UserControl/LayoutRoot),然后根据流体布局设置子大小 - 例如填充和边距或*大小

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

  • @jon我还是不明白!我完全理解d:DesignWidth ="500"是什么,但是LayoutOverrides实际上并没有指定任何尺寸,那究竟它究竟做了什么?你说"LayoutOverrides定义了那个",但定义了什么?如果我在Blend中调整组件的大小,它只会放入高度,而不是d:LayoutOverrides或d:DesignHeight.它似乎在TextBlock上非常普遍,但我仍然感到困惑,因为我没有看到它实际上影响Blend中的任何一种方式: - / (5认同)