c# - Xamarin.Forms - 可以对 SetBinding() lambda 参数进行变量化吗?

标签 c# lambda xamarin xamarin.forms linq-expressions

在 Xamarin 表单中,我们在控件上设置绑定(bind),例如:

myLabel.SetBinding<MyViewModel>(Label.TextProperty, viewModel => viewModel.LabelText);

有没有办法将第二个参数(lambda 表达式)存储在变量中?

基于 this answer ,我试过:

Func<MyViewModel, string> myLambda = viewModel => viewModel.LabelText;
myLabel.SetBinding<MyViewModel>(Label.TextProperty, myLambda);

但是第二个参数有错误的红色下划线

cannot convert from 'System.Func<someViewModel, someType>' to 'System.Linq.Expressions<System.Func<someViewModel, object>>'

最佳答案

是的。通用 source本例中的参数类型为 Expression<Func<MyViewModel, string>> , 不是 Func<MyViewModel, string> .这两种类型都以相同的方式初始化,但含义却截然不同。参见 Why would you use Expression> rather than Func? 了解更多详情。

Expression<Func<MyViewModel, string>> myLambda;
myLambda = viewModel => viewModel.LabelText;
myLabel.SetBinding<MyViewModel>(Label.TextProperty, myLambda);

关于c# - Xamarin.Forms - 可以对 SetBinding() lambda 参数进行变量化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37008941/

相关文章:

testing - 是否有任何可与 Xamarin(最好是 xUnit.Net)一起使用的 PCL 兼容 BDD 框架

c# - 在 View 中放置样式标签

c# - 如何在blazor Webassembly中访问appsettings

使用 lambda 进行 Java 集合聚合

Scala 编译器无法在 Spark lambda 函数中推断类型

c# - List.add 使用 Linq

android - 移动应用程序 : Localfiles VS LocalDB?

c# - Entity Framework 外键约束

c# int 数组哈希集的结构比较

android - 在 GridView 适配器 GetView 方法中使用异步方法