【问题标题】:Why does Blend add [d:LayoutOverrides="Height"] and should I care?为什么 Blend 添加 [d:LayoutOverrides="Height"] 我应该关心吗?
【发布时间】:2009-09-11 14:50:25
【问题描述】:

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

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

<Border d:LayoutOverrides="Height" />

【问题讨论】:

    标签: silverlight xaml expression-blend


    【解决方案1】:

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

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

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

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

    【讨论】:

    • @jon 我还是不明白!我完全理解 d:DesignWidth="500" 的作用,但 LayoutOverrides 实际上并没有指定任何尺寸,那么它到底做了什么?您说“LayoutOverrides 定义了这一点”,但定义了什么?如果我在 Blend 中调整组件的大小,它只会放入 Height,而不是 d:LayoutOverrides 或 d:DesignHeight。它似乎在 TextBlock 上很普遍,但我仍然感到困惑,因为我没有看到它实际上以一种或另一种方式影响 Blend 中的任何东西:-/
    【解决方案2】:

    d:LayoutOverrides

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2013-09-07
      • 2012-12-24
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多