Кастомизация UI

Подскажите, как переопределить css файлы?
Способ, описанный в https://rms.bars.group/doc/#!/guide/Raznoe_03_Kastomizaciya не работает(

Нужно все же убедиться что все сделано по инструкции, что модуль подключен и работает. Имена файлов полностью совпадают ? Модуль, в котором переопределенные файлы инсталится точно после модуля с переопределяемыми (зависимость DependsOn<> указана) ?

Все сделано как в статье.
Имена файлов совпадают.
Попробовал поменять фон рабочего стола, как там описано, фон не меняется.
Про порядок инсталляции можно подробнее? Т.к. в статье ничего про DependsOn не написано.

Если хотите переопределить конкретный файл, то вам в модуле проекта нужно указать зависимость от модуля проекта, в котором этот ресурс уже есть. Затем создать свой так, чтобы их пути совпадали и затем зарегистрировать свой css файл, как обычно в ресурсманифесте.
Я бы рекомендовал все же не переопределять файл, а создать свой файл стилей, например, content/css/custom.css. Затем создать реализацию IClientEntryPointManifest

public class CustomEntryPointManifest : IClientEntryPointManifest
{
  public void Register(IClientEntryPointRegistrationContainer container)
  {
      var desktop = container.GetOrAddEntryPoint("Desktop");
      desktop.Resources.Add("~/content/css/custom.css");
  }
}

И зарегистрировать ее Container.RegisterSingleton<IClientEntryPointManifest, CustomEntryPointManifest>();
В новом файле уже задаете свои стили. Вполне возможно, что вы все сделали правильно, но стили не применяются, тогда стоит обратить внимание на специфичность селектора, которым вы пытаетесь указать новые стили. Этот селектор должен быть специфичнее, чем родной.

1 Лайк

Спасибо!
Можно уточнить что за метод GetOrAddEntryPoint и в чем заключается специфика селектора?

Как я помню BarsUp формирует бандлы стилей и скриптов для разных EntryPoint. Конкретно есть два таких Setup и Desktop. Setup для панели управления и Desktop для основной части приложения. GetOrAdd для безопасности, т.к. я уверен, что сам EntryPoint уже будет создан. Свой EntryPoint можно создать, но от него мало толку, пока вы не заставите BarsUp его использовать переопределив или создав свой *View.cshtml

Дело в том что ресурсы добавляются в общий контейнер в порядке регистрации модулей.
Предположим что есть модуль А в котором лежит оригинальный content/style.css, и есть модуль Б в котором переопределяется этот же content/style.css.

Если модель Б будет загружен после А, то переопределение сработает, но если он будет загружен ДО - то соответственно будет загружен оригинальный css.

Для определения порядка нужно у модуля переопределеить метод SetDependencies(), в котором прописать зависимость Б от А, например

void SetDependencies(){
    base.SetDependencies();
    DependsOn<A.Module>();
}
1 Лайк

Про специфичность селектора могу дать ссылку - http://css.yoksel.ru/specifity/

1 Лайк