Привязка в xaml выдает следующую ошибку:
System.FormatException: Indexer did not contain closing bracket
Как я могу указать имя класса и свойства в виде строкового значения внутри Model.Errors[строковое значение с точками здесь]
Это работает
Text = "{Binding User.Errors[Forename]}"
Этого не происходит при попытке добавить строковое значение с точкой
<Label Text = "{Binding User.Errors[UserDetail.PhoneNumber]}" />
Наличие точки позволяет мне иметь область действия внутреннего класса и имени свойства на стороне С#. Я мог бы заменить точку на +, но тогда я предполагаю, что мне придется создать какой-то преобразователь, чтобы изменить + на точку, когда он достигнет стороны С#?
Не уверены, что есть какой-то другой формат или способ добиться этого, не записывая дополнительную логику преобразователя?





Используйте источник, Люк: Анализатор XAML Xamarin, по-видимому, не допускает такой синтаксис: он не анализирует путь должным образом, а просто разбивает всю строку пути на .. Чтобы обойти это ограничение, я предлагаю преобразователь минимального значения, который позволяет вам сохранить . для доступа к членам:
// 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'}" />
Это мой первый вопрос, который я задал на SO, и я не хотел добавлять ссылку в пост, так как не уверен, считается ли это плохим этикетом из-за плохих ссылок, поэтому я подумал, что включу его внутрь этот комментарий. Я следую руководству Дэвида Брича по добавлению проверки в Xamarin Forms, которое, надеюсь, даст вам дополнительную информацию о том, чего я пытаюсь достичь. Проверка ввода пользователя в Xamarin.Forms