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

时间:2009-09-11 14:50:26

标签: silverlight xaml expression-blend

从Expression Blend 3返回Visual Studio时,我发现Blend已经为我的XAML添加了一个“d:LayoutOverrides”属性。在ASP.NET设计师的成长过程中,我自然不信任任何我不会打字的东西,所以一看到它就立即删除它们。

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

<Border d:LayoutOverrides="Height" />

2 个答案:

答案 0 :(得分:31)

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

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

  1. 您通常可以删除它们而不会产生任何明显的影响
  2. 你可能会看看你是如何使用Blend的 - 具体来说,你应该将父cotainer的大小调整到一个好的大小(UserControl / LayoutRoot),然后根据流体布局设置子大小 - 例如填充和边距或*尺寸
  3. 请注意,Blend的可忽略属性在编译时被删除,并且不会影响应用程序的性能。因此,虽然您可能希望删除它们以提高代码可读性,但它们不会影响应用程序的运行方式。

答案 1 :(得分:2)

  

d:LayoutOverrides

     

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

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