首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在使用嵌套XAML编写代码时绑定语法会不同

为什么在使用嵌套XAML编写代码时绑定语法会不同
EN

Stack Overflow用户
提问于 2013-03-08 17:36:12
回答 1查看 609关注 0票数 2

为什么在使用嵌套XAML编写代码时,绑定语法会有所不同。例如:

代码语言:javascript
复制
 <extensibility:CommandBehavior 
       Command="{Binding SelectionChanged}"  
       CommandParameter="{Binding ElementName=modeItemsListBox,Path=SelectedItems}" >

在上面的例子中,我有CommandParameter,有ElementNamePath,没有任何引号。

但是同样的代码也可以写成:

代码语言:javascript
复制
<extensibility:CommandBehavior
      Command="{Binding SelectionChanged}">
      <extensibility:CommandBehavior.CommandParameter>
            <Binding ElementName="modeItemsListBox"="SelectedItems" />
      </extensibility:CommandBehavior.CommandParameter>
</extensibility:CommandBehavior>

其中ElementNamePath都在引号内。这只是一个不一致,还是我错过了一些层次结构?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 18:04:39

您展示的两个代码片段都将Binding类实例化为MarkupExtension,并允许它为CommandBehaviourCommandParameter属性提供值。

第二个变体(称为“嵌套XAML")可以称为实例化Binding类并为属性提供值的规范方法:类名是元素名,每个属性都是一个属性,并且它遵循XML的所有约定:所有属性值都必须用引号括起来。

当然,如果您需要使用标记扩展来设置大量属性,那么这种规范语法就有点繁琐,因此引入了另一种简写语法:如果需要使用标记扩展Binding来设置名为CommandParameter的属性的值,则可以使用简单的CommandParameter="{Binding ...}" XML语法来实现。值中的大括号非常重要,它们告诉XAML解析器以不同的方式处理该属性值。您将需要为新实例化的绑定类设置属性值,并且不能使用name="value"的常用XAML语法,因为这是在一个属性值中编写的,因此将跳过引号。

希望这能解释一切。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15290810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档