Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从表达式而不是字符串创建绑定?_C#_Wpf - Fatal编程技术网

C# 如何从表达式而不是字符串创建绑定?

C# 如何从表达式而不是字符串创建绑定?,c#,wpf,C#,Wpf,有没有一种方法可以从表达式创建绑定,而不必硬编码属性的名称 通常你会: new Binding("MyPropertyName") 作为框架的一部分,是否有一种方法可以替代,比如: new Binding(x=> x.MyPropertyName) 框架是否提供此功能?目前不可能。您必须等待C#6.0和操作员的姓名- 另一方面,您可以使用以下简单方法: public static string GetPropertyName<T>(Expression<Func<

有没有一种方法可以从表达式创建绑定,而不必硬编码属性的名称

通常你会:

new Binding("MyPropertyName")
作为框架的一部分,是否有一种方法可以替代,比如:

new Binding(x=> x.MyPropertyName)

框架是否提供此功能?

目前不可能。您必须等待C#6.0和操作员的姓名-

另一方面,您可以使用以下简单方法:

public static string GetPropertyName<T>(Expression<Func<T>> expression)
{
    MemberExpression body = (MemberExpression)expression.Body;
    return body.Member.Name;
}
公共静态字符串GetPropertyName(表达式)
{
MemberExpression body=(MemberExpression)expression.body;
返回body.Member.Name;
}

我认为类型推断系统无法确定您的示例中的
x
类型。您需要像
新绑定(MyThing x=>x.MyPropertyName)
这样的东西才能让它工作。我不认为这是直接存在的,但是你可以很容易地创建一个帮助函数来完成它。@BradleyUffner-是的,我只是写了一个失败的例子来说明我的观点,我意识到x是不够的信息,谢谢你指出它。