1.5.7965

Конец декабря — RC2

C# Scripting — в BlazorWindows добавлен NoActivate

Добавлено очень полезное свойство NoActivate. Если его включить, окно будет реагировать на клики мышью, но не будет перехватывать фокус пользователя.

Это значит, что вы можете сделать оверлей с набором элементов управления, через которые пользователь сможет быстро включать и отключать функции вашего бота, при этом окно игры останется активным.

csharp
    /// <summary>
    /// Gets or sets a value indicating whether the window should NOT be activated when clicked
    /// </summary>
    bool NoActivate { get; set; }

C# Scripting — в BlazorWindows добавлен ComplexFileProvider

В IBlazorWindow добавлены одно новое свойство и один метод. Оба можно использовать для подключения собственных провайдеров файловых данных.

Вы можете выбрать любой удобный вариант: добавить свой FileProvider либо через RegisterFileProvider, либо через AdditionalFileProvider. После этого любые файлы, на которые вы будете ссылаться в своем Blazor-коде, станут доступны через этот провайдер.

Это могут быть стили, генерируемые во время выполнения, изображения, видео или любые другие данные, которые нужны для создания действительно динамичного пользовательского интерфейса.

Пока что я рекомендую использовать встроенные варианты:

  • ComplexFileProvider — позволяет объединять несколько FileProvider в один; разрешение файлов происходит в порядке их добавления
  • InMemoryFileProvider — позволяет хранить данные файлов в памяти; для лучшей производительности файлы кэшируются
  • InMemoryFileInfo — позволяет создать одну ссылку на файл в памяти; данные загружаются сразу при создании FileInfo
  • LazyInMemoryFileInfo — позволяет создать ленивую ссылку на файл; данные загружаются только при обращении

С их помощью можно очень легко добавлять новый контент на ваши страницы.

csharp

    /// <summary>
    /// Gets or sets additional file provider which will be used by Blazor
    /// </summary>
    IFileProvider AdditionalFileProvider { get; set; }

    /// <summary>
    /// Adds additional file provider which will be used by Blazor. Added to the end of the list.
    /// Removed on disposal
    /// </summary>
    IDisposable RegisterFileProvider(IFileProvider fileProvider);

Пример кода, который загружает файл с диска и делает его доступным для использования в стилях или HTML:

csharp
var fileProvider = new InMemoryFileProvider();
fileProvider.AddOrUpdate(new InMemoryFileInfo("hello.png", File.ReadAllBytes(@"D:\hello.png")));

Разумеется, отображаемые данные можно генерировать и во время выполнения.

Исправления и улучшения

  • [Scripting] Исправлена проблема, из-за которой Opacity у BlazorWindow в некоторых случаях применялся некорректно