|
|
1
15
让我们来详细介绍一下Alex所说的:
对于XML来说,元素名称中的句号没有任何意义。
到
XAML
,有
相当大的
元素名称中某个句点的重要性。具有讽刺意味的是,Alex引用的建议警告您不要在XML中使用句点字符,这正是正确的
为什么?
XAML使用句点:因此
你为什么不能这么做?
有两个原因。第一个是简单的XML设计:XML元素可以包含多个同名元素。将属性建模为子元素实际上是一个坏主意,因为这样一来,您就必须在模式中强制实现唯一性,或者当存在多个同名子元素时,必须有一个处理对象属性的规则:
这就是为什么XAML将属性建模为 属性 ,其中XML要求是唯一的:
(顺便说一句,在XAML中使用属性有一个问题:如果一个对象的属性必须按特定的顺序设置,你不应该使用属性来表示它们
发生
那
这个
另外
原因是如此多的WPF对象都是其他对象的容器。如果XAML允许元素表示属性,那么如果需要表示一个对象,而该对象的属性与其可能包含的对象的类同名,那么您就要倒霉了。例如,您当然可以创建一个
|
|
|
2
2
据我所知,这对
另一方面,你问题中的片段不是XAML;它是Silverlight应用程序部署清单的一部分。不过,这句话的语义
|
|
|
3
2
这是今天在 WPF in Action with Visual Studio 2008 by Feldman and Daymon 4.2.3. 使用附加属性您可能已经注意到清单4.2中的属性值有一个有趣的地方。宽度和填充等属性看起来像常规的XML属性。但左属性和上属性的符号有点不同:
按钮没有“左”和“上”属性。与Windows窗体不同,Windows窗体假定所有控件都有一个明确的位置,WPF的工作假设是父控件负责每个控件的放置。您将在其他布局类型中看到这一点。对于画布,每个控件都必须设置其显式位置。因为画布布局需要这些信息,所以由画布布局来处理这些信息。 在“经典”XML(即可以通过模式验证的XML)中,通常需要在每个子级周围引入一个元素,以指定特定于父级的属性,如清单4.3所示。 清单4.3。为子级设置属性的方法(但WPF不支持)
这种方法可以工作,但非常冗长,尤其是当您有很多嵌套项时。它还意味着一种并不存在的等级制度。XAML不需要更详细的XML,也不需要让画布遵循它可能不需要的结构,而是引入了一种表示法,允许通过使用点表示法在子对象上定义属于父对象的属性:
这应该理解为“当你把按钮添加到画布上时,告诉画布按钮应该位于左40和上40。”这些属性称为附加属性,因为它们附加到它们所引用的子级,即使它们属于包含控件(本例中为画布)。您将在XAML中看到各种属性的这种符号。您只需记住中间点的属性是由包含控件使用的真正设置值。好处是,在属性编辑器中编辑控件的属性时,附加的属性将显示为控件属性集的一部分 |
|
|
4
0
XML的命名规则得到了明确的解释,例如。 here :
我给出的URL继续提供“最佳实践”建议,其中包括
但是,这只是一个建议(打破它可能会使您的XML难以在某些软件中使用),就像agains使用的一样
|
|
|
5
0
简而言之,这纯粹是一个XAML构造,与XML无关。
对于XML,使用类似点的名称
为什么XAML使用圆点?这只是一种XAML格式,意味着我们正在设置元素对象的上述属性。这基本上是为了让XAML引擎处理这一点,它还使XAML可读性强,易于理解。 附加信息:很高兴知道。 XAML本质上包含属性及其值对,因为它们代表相当复杂的对象(导致更深层的层次结构),所以它有助于确定哪个元素是属性,哪个元素是值。 每当XAML编译器或您看到<X.Y>,这意味着正在设置X的Y属性。 还值得注意的是,XAML不允许您仅为值插入任何XML代码,这些值总是封装在相关的XAML对象中,这就是它知道如何处理该值的方式。 例如:
从概念上讲,很容易在上面看到这一点,但当然,常见的和推荐的语法如下所示,只是简短易懂:
在简单的情况下,这可能没有太多意义,但是想象一下您的组合框项是一个复杂的项(比如一个名为
现在,由于它是ComboBoxItem,您可以选择它,等等,并对combobox中的一个项目执行任何操作。因为你有
这也是为什么当你提供
这也是为什么XAML中通常有更深层的层次结构,从一件事到另一件事,再到另一件事,再到另一件事:) |