【问题标题】:Properties order in Margin保证金中的属性顺序
【发布时间】:2012-01-21 06:18:20
【问题描述】:

如果我在 XAML 中有这样的字符串:

Storyboard.TargetProperty="Margin" From="1,2,3,4" To="0,0,0,0"

什么是右上角和左上角? 1- 对 2-顶部 还剩3个 4 - 底部

是吗?

【问题讨论】:

标签: .net wpf xaml


【解决方案1】:
Margin="1,2,3,4"
  1. 左,
  2. 顶部,
  3. 对,
  4. 底部

也可以像这样只指定两种尺寸:

Margin="1,2"
  1. 左右
  2. 顶部和底部

最后你可以指定一个尺寸:

Margin="1"
  1. 用于所有侧面

顺序与 WinForms 中相同。

【讨论】:

  • LTRB 是容易记住的短符号。
  • 注意:这个顺序和html的css顺序不同,就是上、右、下、左。
  • 有人知道他们为什么决定使用不同于 CSS 的东西吗?
  • @crclayton - 正如我所写;顺序与 WinForms 中的相同。 WinForms 是 WPF 的自然前身,因此软件(开发人员)将从 WinForms 升级到 WPF。
  • 怎么样。 WPF 始于西方。网景从北方开始?显然两者都是顺时针。
【解决方案2】:

有三种独特的情况:

  • 4 个数字,例如Margin="a,b,c,d"
  • 2 个数字,例如Margin="a,b"
  • 1 个数字,例如Margin="a"

4 个数字

如果有4个数字,则为lefttoprightbottom(从中间左边距开始的顺时针圆圈)。第一个数字总是像“WPF”一样的“West”:

<object Margin="left,top,right,bottom"/>

示例:如果我们使用Margin="10,20,30,40",它会生成:

2 个数字

如果有2个数字,那么第一个是左右边距厚度,第二个是上下边距厚度。第一个数字总是像“WPF”一样的“West”:

<object Margin="a,b"/> // Equivalent to Margin="a,b,a,b".

例子:如果我们使用Margin="10,30",左右边距都是10,上下边距都是30。

1 个号码

如果有 1 个数字,则重复该数字(本质上是边框粗细)。

<object Margin="a"/> // Equivalent to Margin="a,a,a,a".

示例:如果我们使用Margin="20",它会生成:

2020 年 5 月 27 日更新

在过去 5 年中一直致力于开发具有 100 多个屏幕的大型 WPF 应用程序。 5 个 WPF/C#/Java 开发人员团队的一部分。我们最终决定使用 1 个数字(用于边框厚度)或 4 个数字。我们从不使用 2。它是一致的,并且似乎是在开发时减少认知负担的好方法。


规则:

所有宽度数字从左侧开始(“West”,如“WPF”)并顺时针方向(如果有两个数字,只需顺时针方向两次,然后镜像其余数字)。

【讨论】:

  • "如果有 2 个数字,那么第一个是左右边距厚度" 但是在示例中第一个数字是 30,它最终是顶部和底部边距。
【解决方案3】:

仅仅因为@MartinCapodici 的评论很棒,我在这里写下这个答案是为了提供可见性。

全部顺时针:

  • WPF 开始West(left->top->right->bottom)
  • Netscape(即 CSS)开始 North(上->右->下->左)

【讨论】:

    【解决方案4】:
    <object Margin="left,top,right,bottom"/>
    - or - 
    <object Margin="left,top"/>
    - or - 
    <object Margin="thicknessReference"/>
    

    请看这里:http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.margin.aspx

    【讨论】:

    • 对于第二个例子,“left,top”,它实际上是重复的:第一个数字是指左右,第二个是指上下,见下面我的回答。
    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多