杂七杂八——Name与x:Name的关系

 杂七杂八——Name与x:Name的关系

 

小序:

 

如果想用Google搜包含冒号的内容怎么办?比如我想搜x:Name这个字符串……

原来,应该是这样——x::Name

这世道,连搜索也要加转义,全民程序员,要不要人活了?

 

正文:

 

从第一天学习XAML语言开始,我就一直没分清为什么对于一个XAML标签既可以设置它的Name又可以设置它的x:Name。问过一些同事,大家好像对这种比较孔乙己的问题不太感兴趣。今天花了些时间看了看,收获还挺多的。与大家分享一下。

 

首先,让我们剖析一下XAML代码与C#代码之间的关系。

 

大家都知道,XAML是“用来设计UI”的,设计师用XAML设计出来的UI其后台代码(程序逻辑)可以由程序员用C#或者VB去写——这叫做Code-behind。实际上,设计师用XAML和程序用C#都是在构建同一个类,换句话说就是:把一个类劈成两半,与UI相关的那半由设计师用XAML写,与逻辑相关的那半由程序员用C#写。

 

.NET之所以支持这种劈开写的功能,得益于partial这个关键字。请大家看这两段代码

 

  1.     // For UI
  2.     public partial class Car
  3.     {
  4.         Color bodyColor;
  5.         Color windowColor;
  6.         Polygon door;
  7.         Polygon seat;
  8.     }
  9.     // For logic
  10.     public partial class Car
  11.     {
  12.         public void Accelerate() { /*80, 90... 120, 140....1200...flying...*/}
  13.         public void Break() { /*zizizizizizizizizi....*/ }
  14.     }
  1.     public  class Car
  2.     {
  3.         // UI
  4.         Color bodyColor;
  5.         Color windowColor;
  6.         Polygon door;
  7.         Polygon seat;
  8.         // logic
  9.         public void Accelerate() { /*80, 90... 120, 140....1200...flying...*/}
  10.         public void Break() { /*zizizizizizizizizi....*/ }
  11.     }

实际效果是完全一样的。只是前者是把UI和逻辑劈开写,后者是混在一起写罢了。

 

劈开的确是劈开了,但让设计师用C#代码去实现UI恐怕不现实——让Blend直接生成C#不是不可能是事情,只是C#描述UI太不直观了。于是,微软更进一步,把界面描述语言又向设计师方向推进了一层,也就是XAML语言。于是,开发和设计的格局就变成了这样:

 

 

有了XAML和将XAML解析为C#/VB的解析器,设计师们就能以自己最高的工作效率与程序员们合作开发软件了。目前关于XAML是如何解析成C#/VB的资料非常少。

 

 

Name揭秘

 

下面让我们把目光集中在XAML->C#的解析上来,看看Name和x:Name的本质是什么。

 

让我们看一段代码:

 

  1. <
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值