Локализация в .Net MAUI с привязками на основе выраженийC#

Место общения программистов C#
Ответить
Anonymous
 Локализация в .Net MAUI с привязками на основе выражений

Сообщение Anonymous »

Я следую руководству Джеральда Верслуиса по локализации в .NET MAUI. Для локализации текстов в XAML он использует следующее расширение:

Код: Выделить всё

[ContentProperty(nameof(Name))]
public class TranslateExtension : IMarkupExtension {
public string Name { get; set; }

public BindingBase ProvideValue(IServiceProvider serviceProvider) {
return new Binding {
Mode = BindingMode.OneWay,
Path = $"[{Name}]",
Source = LocalizationResourceManager.Instance
};
}

object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) {
return ProvideValue(serviceProvider);
}
}
Но это дает предупреждение:

IL2026: использование члена 'Microsoft.Maui.Controls.Binding.Binding( )», который имеет RequiresUnreferencedCodeAttribute, может нарушить функциональность при обрезке кода приложения. Использование привязок со строковыми путями не безопасно при обрезке. Вместо этого используйте привязку на основе выражений.

Как преобразовать привязку в приведенном выше коде в привязку на основе выражений?
Я пробовал использовать BindingBase.Create:

Код: Выделить всё

return BindingBase.Create (
lm => lm[Name],
BindingMode.OneWay,
source: LocalizationManager.Instance);
Но затем я получаю сообщение об ошибке компиляции: «Лямбда-выражение должно быть статическим».

Подробнее здесь: https://stackoverflow.com/questions/792 ... d-bindings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»