是否可以在绑定中使用 DataContext 的方法?
例如签名public bool ProjectIsActive(int number)
[注意:不是静态的],它可以在绑定中声明吗?
编辑:按照 ywm 和 Sheridan 的建议,我尝试向我的窗口添加一个名为 _this 的资源。
我将签名更改为public bool ProjectIsActive(object number)
.
<Window.Resources>
<ObjectDataProvider x:Key="ProjectIsActive"
ObjectInstance="_this.DataContext"
MethodName="ProjectIsActive">
<ObjectDataProvider.MethodParameters>
<sys:Object></sys:Object>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
那么Trigger的Binding设置为:
<Binding Source="{StaticResource ProjectIsActive}" Path="MethodParameters[0]" BindsDirectlyToSource="true" />
它给出了错误: System.Windows.Data 错误:35:ObjectDataProvider:尝试调用类型方法失败;方法='ProjectIsActive'; 类型='字符串'; 错误='未找到具有匹配参数签名的方法。' MissingMethodException:'System.MissingMethodException:找不到方法'System.String.ProjectIsActive'。在 System.RuntimeType.InvokeMember(字符串名称、BindingFlags bindingFlags、Binder binder、Object 目标、Object[] providedArgs、ParameterModifier[] 修饰符、CultureInfo 文化、String[] namedParams)在 System.Windows.Data.ObjectDataProvider.InvokeMethodOnInstance(Exception & e )'
ObjectDataProvider.MethodParameters 的方法签名没有区分输入参数的返回值,我不知道如何进行。
注意:这个目标也可以通过使用 MultiValueConverter 并在 Convert 方法中进行强制转换等来实现。我只是好奇,因为绑定到属性非常容易,而绑定到方法 [在我的例子中] 非常困难。还有更好的方法来避免调用方法。