如何将XAML绑定与以下{binding model.errors [className.propertyname]}一



在XAML中绑定以下错误:

System.FormatException: Indexer did not contain closing bracket

我如何在模型内提供类和属性名称作为字符串值。ERRORS[带有点的字符串值]

这有效

Text="{Binding User.Errors[Forename]}"

尝试添加dot

的字符串值时,这不是
<Label Text="{Binding User.Errors[UserDetail.PhoneNumber]}" />

拥有点使我可以在C#侧具有内部类和属性名称的范围。我可以用A 替换DOT,但后来我假设我必须构建一些转换器以将 更改为dot时,当它到达c#side时?

不确定是否还有其他类型的格式或方法可以实现此目的,而无需写出其他转换器逻辑?

使用源:Xamarin的XAML解析器显然不允许这样的语法:它不能正确解析路径,而只是将整个路径字符串按.分配。为了解决此限制,我建议一个最小的价值转换器,使您可以将.保留以供成员访问:

// error handling and boilerplate omitted
public class ErrorConverter : IValueConverter
{
    public object Convert (object value, Type targetType,
        object parameter, CultureInfo culture)
    {
        return ((ErrorCollection) value)[(string)parameter] ;
    }
}

然后在这样的绑定中使用它:

<Label Text="{Binding User.Errors, Converter={StaticResource ErrorConverter},
     ConverterParameter='UserDetail.PhoneNumber'}" />

最新更新