Расширение Maui Markup вызывает аварию при первом вызовеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Расширение Maui Markup вызывает аварию при первом вызове

Сообщение Anonymous »

В моем проекте Maui я использую существующее расширение разметки для управления локализацией моих текстов (ссылка на расширение, LocalizationResourcemanager). Однако в конкретной кнопке мне нужно иметь возможность изменить ключ, предоставленную на расширение на основе некоторых конкретных данных из моего приложения. Я решил пойти с пользовательским расширением в качестве слоя выше базового расширения, выбрав, какой ключ для предоставления, и с некоторой логикой, чтобы вызвать изменение в XAML при изменении языка. PrettyPrint-Override ">namespace MyApp.Extensions
{
[ContentProperty(nameof(PrefixKey))]
public class DynamicTranslateExtension : IMarkupExtension
{
public string PrefixKey { get; set; }

// Indicates which property from AppData to seek for the final key
public string SuffixType { get; set; }

public BindingBase ProvideValue(IServiceProvider serviceProvider)
{
// We could return a simple string, but we use a binding so we can trigger a refresh when culture changes
return new Binding
{
Source = DynamicTranslator.Instance,
Path = $"[{PrefixKey},{SuffixType}]",
Mode = BindingMode.OneWay
};
}

object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) => ProvideValue(serviceProvider);
}

public class DynamicTranslator : INotifyPropertyChanged
{
#region = Singleton =

private static DynamicTranslator m_Singleton;
public static DynamicTranslator Instance
{
get
{
m_Singleton ??= new DynamicTranslator();
return m_Singleton;
}
}

public DynamicTranslator()
{
WeakReferenceMessenger.Default.Register(this, (o, m) => Invalidate());
}

#endregion

public string this[string compositeKey]
{
get
{
var parts = compositeKey.Split(',');
var prefixKey = parts[0];
var suffixType = parts.Length > 1 ? parts[1] : "";
return GetDynamicTranslation(prefixKey, suffixType);
}
}

public static string GetDynamicTranslation(string prefixKey, string suffixType)
{
string finalKey;
if (string.IsNullOrEmpty(prefixKey))
{
finalKey = "!InvalidKey!";
}
else
{
var ruleset = AppData.CurrentCompetition.Ruleset;
string suffix = "";

if (suffixType == "Group")
{
suffix = (ruleset.GroupDenomination);
}

finalKey = $"{prefixKey}_{suffix}";
}
try
{
var translation = App.LocalizationResourceManager[finalKey];
return translation;
}
catch
{
return $"!{finalKey}!";
}
}

public event PropertyChangedEventHandler PropertyChanged;
public void Invalidate()
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(null));
}

}
}

И его следует использовать в XAML следующим образом: labelText = "{ubext: DynamicTransLate GroupSelect, SuffixType = 'Group'}" (следует запросить в локализации rupecemanager select_squad или GroupSelect_Relay dependist.group. «Реле»)
В подавляющем большинстве ситуаций он работает хорошо, на эмуляторах Visual Studio или некоторых устройствах, однако при тестировании конкретных Devics, Amazon Fire Tablets я получаю NullReferenceExexexexexexex, и приложение сбивается (полное исключение ниже для получения подробной информации) при достижении инициализации

Подробнее здесь: https://stackoverflow.com/questions/796 ... rst-called
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Расширение Maui Markup вызывает аварию при первом вызове
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Расширение Maui Markup вызывает аварию при первом вызове
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Расширение Maui Markup вызывает аварию при первом вызове
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Расширение Maui Markup вызывает аварию при первом вызове
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Библиотека класса WPF Throws System.windows.markup.xamlparseexception При ссылке на сборку WPF Localize расширение
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

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