CommandParameter MultiBinding返回具有空元素的数组

时间:2020-11-02 01:09:50

标签: c# wpf mvvm data-binding

const str = service.get("string") as string; // I'm telling the compiler it's a string
console.log(str.toUpperCase()); // works now

const str2 = service.get("string");
console.log(
  typeof str2 === "string" ? str2.toUpperCase() : "NOT A STRING"
); // I'm testing
HTML

我已经在类中实现了 IMultiValueConverter 接口,并实现了 Convert 方法,但是

当我的按钮命令执行方法“ AddCustomer”时,命令参数最终以 object [] {null,null}结束。

我没有找到关于为什么必须放置 return values.Clone(); 来解决此问题的解释

1 个答案:

答案 0 :(得分:1)

绑定是否返回null(如您在编辑之前声明的标题)还是返回两个元素的数组{ null, null }(如您的帖子所声明的)?前者似乎不太可能。如果单个绑定不正确,则会发生后者。

但是,另一件事是,如果您实际上要返回values数组,那么它不是您拥有的数组,也不能依靠。作为一种优化,每次调用转换器时WPF都会重用同一数组,并在转换器返回后清除该数组的元素。

克隆数组可解决问题与此行为一致。答案很简单:不要尝试使用该数组。不是你的如果要逐字读取所有值,则必须像现在一样将其复制到新数组中。