Откройте браузер с URL-адресом WPF

Как открыть внешний браузер по гиперссылке, в браузере это будет target='_top'.

Что такое код в приложении WPF netcore 3.1?

  1. Использовать параметр команды

    <TextBlock>
        <Hyperlink CommandParameter="{Binding ExternalURL}"
                   Command="{Binding NavHomeViewCommand}" >Open in Browser ...
        </Hyperlink>
    </TextBlock>
    
  2. Измените DelegateCommand, чтобы использовать параметр объекта (используя шаблон prismlibrary mvvm)

    navHomeViewCommand = new DelegateCommand<object>(NavHomeView);
    
  3. Свойства команды:

    public string ExternalURL{ get => "https://www.google.com/";}
    private readonly ICommand navHomeViewCommand;
    public ICommand NavHomeViewCommand
    {
        get { return navHomeViewCommand; }
    }
    
  4. Откройте браузер

    private void NavHomeView(object ID)
    {
        if(obj is string destinationurl)
            System.Diagnostics.Process.Start("https://google.com");  //???????   
    }
    

Выдается исключение «неизвестный исполняемый файл».


person OzBob    schedule 12.02.2020    source источник
comment
Посмотрите, решит ли это вашу проблему   -  person TheGeneral    schedule 12.02.2020
comment
.netcore3.1 — это не ваш повседневный WPF   -  person OzBob    schedule 13.02.2020
comment
ни один из ответов на «повторяющийся» вопрос не сработал. После долгих проб и ошибок получился "хак": System.Diagnostics.Process.Start(cmd, /C start + + targeturl);   -  person OzBob    schedule 13.02.2020
comment
Я снова открою этот вопрос, и вы сможете сами ответить   -  person TheGeneral    schedule 13.02.2020
comment
Вы также можете пометить это. .netcore 3.1   -  person TheGeneral    schedule 13.02.2020
comment
Кроме того, 2, это может стоить небольшого вознаграждения, если вы покажете все, что не работает, могут быть люди, у которых была такая же проблема, и они знают, как лучше обойти это.   -  person TheGeneral    schedule 13.02.2020


Ответы (2)


Решение, которое открывает браузер по умолчанию на уровне ОС Windows с указанным URL-адресом. Рекомендовано через выпуск WPF Github 2566:

        var destinationurl = "https://www.bing.com/";
        var sInfo = new System.Diagnostics.ProcessStartInfo(destinationurl)
        {
            UseShellExecute = true,
        };
        System.Diagnostics.Process.Start(sInfo);

СТАРОЕ: решение, которое открывает скрытую подсказку CMD и открывает браузер ОС Windows по умолчанию:

    private void NavHomeView(object ID)
    {
        //return;
        if (IDis string destinationurl)
        {
            var link = new Uri(destinationurl);
            var psi = new ProcessStartInfo
            {
                FileName = "cmd",
                WindowStyle = ProcessWindowStyle.Hidden,
                UseShellExecute = false,
                CreateNoWindow = true,
                Arguments = $"/c start {link.AbsoluteUri}"
            };
            Process.Start(psi);
        ...

но если вы намерены упаковать приложение с помощью типа проекта упаковки MSIX и поместить его в Магазин Windows, вам нужно не прошел сертификацию для использования CMD.EXE.

person OzBob    schedule 14.02.2020

System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe", "https://www.google.fr");

или если вы не знаете путь к файлу .exe навигатора

var UrlExterne = "https://www.google.fr";
var filetemp = $"{Path.GetTempFileName()}.url";
try
{
     using (var sw = new StreamWriter(filetemp))
     {
          sw.WriteLine("[InternetShortcut]");
          sw.WriteLine($"URL={UrlExterne}");
          sw.Close();
      }
      System.Diagnostics.Process.Start(filetemp);
 }
 finally
 {
     if(File.Exists(filetemp))
          File.Delete(filetemp);
 }
person DevStranding    schedule 13.02.2020