我在Xamarin.iOS应用程序中使用MVVM Light Toolkit的5.3.0版来创建共享库中ViewModels的数据绑定。绑定是
_bindingList.Add(
this.SetBinding(
() => _sessionViewModel.ActiveSession.Swings.Count,
() => _swingCountLabel.Text,
fallbackValue: 0,
targetNullValue: 0)
.ConvertSourceToTarget(c => $"({c.ToString()})"));
The Swings是一个可观察的收藏品。 ActiveSession是一个可观察的属性。只要ActiveSession不为null就可以了。当ActiveSession设置为null时,将生成以下异常:
“System.Int32”类型的对象无法转换为“System.String”类型。
错误发生在MVVM Light函数名称'SetSpecialValues'中。我下载了源代码,看起来使用Fallback值的情况是在调用SetValue之前没有使用转换器。
以下类似的绑定工作正常(源和目标类型相同)。当ActiveSession为null时,它会正确显示“-----”。
_bindingList.Add(
this.SetBinding(
() => _sessionViewModel.ActiveSession.Name,
() => _sessionLabel.Text,
fallbackValue: "-----",
targetNullValue: "-----"));
支持这种类型的绑定还是我做错了什么?
由于