chromelyapps / Chromely

Build Cross Platform HTML Desktop Apps on .NET using native GUI, HTML5, JavaScript, CSS, Owin, AspNetCore (MVC, RazorPages, Blazor)
MIT License
2.98k stars 280 forks source link

Howto: Reload with a Url Change #338

Closed mattkol closed 3 years ago

mattkol commented 3 years ago

ReloadDemo.zip

    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            var config = DefaultConfiguration.CreateForRuntimePlatform();
            config.StartUrl = "local://app/index.html";

            AppBuilder
            .Create()
            .UseConfig<DefaultConfiguration>(config)
            .UseApp<DemoApp>()
            .Build()
            .Run(args);
        }
    }

    public class DemoApp : ChromelyBasicApp
    {
        public override void ConfigureServices(IServiceCollection services)
        {
            base.ConfigureServices(services);
            RegisterControllerAssembly(services, typeof(DemoApp).Assembly);
        }
    }
 <a href="http://command.com//window/reload">Reload</a>
    [ControllerProperty(Name = "WindowController")]
    public class WindowController : ChromelyController
    {
        private readonly IChromelyConfiguration _config;

        public WindowController(IChromelyConfiguration config)
        {
            _config = config;
        }

        [CommandAction(RouteKey = "/window/reload")]
        public void Reload(IDictionary<string, string> queryParameters)
        {
            var scriptExecutor = _config?.JavaScriptExecutor;
            if (scriptExecutor != null)
            {
                Xilium.CefGlue.CefBrowser browser = scriptExecutor.GetBrowser() as Xilium.CefGlue.CefBrowser;
                if (browser != null)
                {
                    browser.GetMainFrame().LoadUrl("https://google.com");
                }
            }
        }
    }

Before reload: image

After reload: image