Открыть браузер с URL WPF - PullRequest
       1

Открыть браузер с URL WPF

0 голосов
/ 12 февраля 2020

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

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

  1. Использовать CommandParameter

    <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");  //???????   
    }
    

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

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Решение, которое открывает 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);

OLD: Решение, которое открывает тихую подсказку CMD и открывает браузер по умолчанию Windows OS:

    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 Store, то вы не пройдете сертификацию для использования CMD.EXE.

0 голосов
/ 13 февраля 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);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...