You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP中如何实现扩展方法的x:Bind编译绑定?

在UWP的x:Bind中绑定扩展方法的正确方式

你在UWP中尝试用x:Bind绑定扩展方法时遇到编译错误,之前的两种写法都不符合要求,以下是正确的实现方式:

正确的绑定写法

你的类定义、扩展方法以及命名空间引用都没问题,只需要修改DataTemplate中的绑定代码:

方式一:使用$Data明确指定当前数据实例

<DataTemplate x:DataType="ns1:MyClass">
    <TextBlock Text="{x:Bind ns2:MyClassExt.GetExtVal($Data)}" />
</DataTemplate>

方式二:使用.简写代表当前数据上下文

<DataTemplate x:DataType="ns1:MyClass">
    <TextBlock Text="{x:Bind ns2:MyClassExt.GetExtVal(.)}" />
</DataTemplate>

为什么之前的写法失败

  • 第一种写法传入的是ns1:MyClass类型本身,而扩展方法的第一个参数需要的是该类型的实例,因此编译报错。
  • 第二种写法没有传入任何参数,但扩展方法要求必须接收一个MyClass实例作为第一个参数,自然无法通过编译。

扩展方法本质是静态方法,调用时必须显式传入目标类型的实例作为第一个参数,而$Data或.正好对应当前DataTemplate绑定的MyClass实例,这样就能正确触发扩展方法的调用。

内容的提问来源于stack exchange,提问作者Ben Jasperson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:15:37