WPF + Xceed PropertyGrid, не удается локализовать атрибут CategoryAttribute в пользовательском интерфейсе - PullRequest
0 голосов
/ 18 февраля 2019

Я использую Xceed PropertyGrid V.3.5.0 .Я хотел локализовать CategoryAttribute и DisplayNameAttribute свойств объекта, которые должны отображаться как SelectedItem PropertyGrid.Я обработал, чтобы вернуть правильный текст из соответствующих языковых файлов ресурсов.И я достиг изменения DisplayNameAttribute на основе изменения языка пользователя во время выполнения.Но CategoryAttributes не обновляются в пользовательском интерфейсе.Может кто-то помочь мне с этим?Заранее спасибо.

Я использую следующий

  1. LocalizedDisplayNameAttribute класс, который обрабатывает для возврата текста из соответствующего файла ресурсов во время выполнения. Это работает.Обновление пользовательского интерфейса с изменением языка
class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
    private readonly string resourceName;
    public LocalizedDisplayNameAttribute(string resourceName) : base()
    {
        this.resourceName = resourceName;
    }

    public override string DisplayName
    {
        get
        {
            var displayName= TranslationSource.Instance[resourceName];
            //here displayName retrieve the value and will be updated in UI 
            //  based on language change at runtime
            return displayName;
        }
    }
}
LocalizedCategoryAttribute класс, который обрабатывает для возврата текста из соответствующего файла ресурсов во время выполнения. Это не работает
public class LocalizedCategoryAttribute : CategoryAttribute
{
    readonly string _resourceKey;
    public LocalizedCategoryAttribute(string resourceKey)
    {
        _resourceKey = resourceKey;
    }
    public new string Category
    {
        get
        {
            return TranslationSource.Instance[_resourceKey];
        }
    }
    protected override string GetLocalizedString(string value)
    {
        string category = TranslationSource.Instance[_resourceKey];
        //Here cetegory return value, but its not getting updated in UI
        return category;
    }
}
Выбранный объект объекта Пример класса модели для PropertyGrid
public class Employee
{
    private string _internalGrade;
    [LocalizedCategoryAttribute("Catgeory"), 
    LocalizedDisplayNameAttribute("Grade"),DescriptionAttribute("Some description")]
    public string InternalGrade
    {
        get { return _internalGrade; }
        set
        {
            _internalGrade= value;
        }
    }
}

Здесь LocalizedDisplayNameAttribute отлично работает LocalizedCategoryAttribute не работает

МожетКто-нибудь помочь мне найти проблему здесь или предложить альтернативное решение для достижения этого сценария?Пожалуйста, задавайте вопросы, если мои вопросы не ясны.

...