【问题标题】:Getting wrong when i use x:bind in uwp: invalid binding path err当我在 uwp 中使用 x:bind 时出错:无效的绑定路径错误
【发布时间】:2019-05-29 16:28:16
【问题描述】:

我尝试使用 x:bind 函数来显示使用 String.Concat() 连接两个字符串的字符串。我按照这个网站的指示:https://docs.microsoft.com/en-us/windows/uwp/data-binding/function-bindings

由于这是Stack Overflow上的第一个问题,如果我问的方式有误,请指出。谢谢(≧∀≦)ゞ

我尝试在另一个命名空间中创建的函数中使用 System.Contact(),它看起来不错。

xmlns:sys="using:System"
xmlns:local="using:uwpppp.Scenes.ReciteF">

...

<TextBlock Text="{x:Bind sys:String.Concat('hello','123')}"/><!--not good-->

<TextBlock Text="{x:Bind local:Showdetail.GetString('hello','hello2')}"/><!--good-->
public static String GetString(string a, string b)
{
    return String.Concat(a, b);
}

无效的绑定路径 'sys:String.Concat('hello','123')' : 函数参数 '1' 无效或不匹配

【问题讨论】:

  • 我遇到了同样的问题。当我使用我自己的类中的函数时它可以工作,但在使用 System.
  • 这是 UWP 中的一个错误,尚未修复。你会在 UWP 中发现很多功能。你想达到什么目的?

标签: c# uwp uwp-xaml


【解决方案1】:

根据documentation,我认为问题出在这一点:

重载基于参数的数量,而不是类型,它会尝试匹配具有那么多参数的第一个重载

String.Concat 有许多不同的重载,x:Bind 机制很可能首先找到 (object,object) 重载,这会导致您看到的错误:

Invalid or missmatched parameter at position '1'.

对于您的自定义方法,您只有一个重载,因此它可以清楚地使用(string, string) 参数。

【讨论】:

  • 好的,我将使用不同名称的自定义方法来避免这个问题,谢谢!
  • 它对我来说不适用于 1、2 或 3 个参数,但这有效:
  • 非常不寻常。但我想在这种情况下,它会在四个 objects 之前找到 string 重载
  • 如果答案有帮助,请考虑将答案标记为解决方案,以便关闭问题:-)
  • 这对我来说也是{x:Bind MyControl.SomeBoolValue.Equals(x:False), Mode=OneWay}。我认为它在Boolean 过载之前达到了object 过载(尽管我不确定)。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2023-03-04
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
相关资源
最近更新 更多