当前位置: 代码迷 >> C# >> WPF,XAML中属性赋值有先后顺序吗?该如何解决
  详细解决方案

WPF,XAML中属性赋值有先后顺序吗?该如何解决

热度:255   发布时间:2016-05-05 05:24:40.0
WPF,XAML中属性赋值有先后顺序吗?
本帖最后由 fdr354t 于 2014-12-25 19:55:44 编辑
假设一个自定义控件CustomControl1,有MaxValue、TextValue两个属性,那么,下面的代码:

 <local:CustomControl1 MaxValue="100"  TextValue="300"/>


 <local:CustomControl1 TextValue="300"  MaxValue="100" />


TextValue和MaxValue的属性赋值有先后顺序吗?是不是按照在XAML中排列的先后顺序赋值呢?
如果TextValue的值会根据MaxValue的值而确定的话,这就很关键了呢......
当两个属性值有关联,该如何处理这种先后顺序呢?
------解决思路----------------------
如果TextValue的值会根据MaxValue的值而确定的话,那就把TextValue放到后面赋值啊
------解决思路----------------------
你这两个属性 应该是附加属性。你所谓的关联是什么? 根据max值 来确定value的范围,看你注册的时候怎么写了。
------解决思路----------------------
如果TextValue的值会根据MaxValue的值而确定的话
-------
如果真的是这样,你TextValue就根本不应该出现在xml文件里,而是通过MaxValue计算出来

而你问的其实是需要验证TextValue不能比MaxValue大,那么要验证你总归是必须把这两个值先都获取到的,先获取哪个后获取哪个有什么关系
------解决思路----------------------
引用:
Quote: 引用:

如果TextValue的值会根据MaxValue的值而确定的话,那就把TextValue放到后面赋值啊

可是我试了一下,TextValue放到后面赋值,结果还是TextValue比MaxValue先赋值

这跟你把属性放到xml文件前面还是后面没关系
要看你代码到底先读取的哪个属性
------解决思路----------------------
比如a属性的赋值会关联到b属性的值,比如a设成3,他内部会把b也设成3。这种情况下在写xaml的时候必然要把a写在前头,因为写后头会修改前面给b赋的值啊。这个事情具体问题具体分析了。看你的需要来决定
------解决思路----------------------
引用:
还是感觉没说明了

xml文件只是个结构,它本身是不会执行的,所以代码的执行顺序其实和它的结构没有必然联系
即使你把a写在b的下一行,如果代码里先遍历判断b是否存在,再遍历判断a是否存在,依然是先获取b,再获取a