Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用URL WPF打开浏览器_C#_Wpf_Browser_.net Core 3.1 - Fatal编程技术网

C# 使用URL WPF打开浏览器

C# 使用URL WPF打开浏览器,c#,wpf,browser,.net-core-3.1,C#,Wpf,Browser,.net Core 3.1,如何通过超链接打开外部浏览器,在浏览器中它将是target=''u top' WPF netcore 3.1应用程序中的代码是什么 使用命令参数 <TextBlock> <Hyperlink CommandParameter="{Binding ExternalURL}" Command="{Binding NavHomeViewCommand}" >Open in Browser ... </Hyperlink>

如何通过超链接打开外部浏览器,在浏览器中它将是target=''u top'

WPF netcore 3.1应用程序中的代码是什么

  • 使用命令参数

    <TextBlock>
        <Hyperlink CommandParameter="{Binding ExternalURL}"
                   Command="{Binding NavHomeViewCommand}" >Open in Browser ...
        </Hyperlink>
    </TextBlock>
    
  • 打开浏览器

    private void NavHomeView(object ID)
    {
        if(obj is string destinationurl)
            System.Diagnostics.Process.Start("https://google.com");  //???????   
    }
    
  • 引发异常“未知可执行文件”

    System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe", "https://www.google.fr");
    
    或者如果您不知道navigator的.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);
     }
    

    使用指定URL打开Windows OS级别默认浏览器的解决方案。推荐途径:

    旧版: 打开静默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应用商店,那么您将需要使用CMD.EXE。

    看看这是否解决了您的问题。netcore3.1不是您的日常WPF“重复”问题中的一个答案有效。经过多次尝试和错误后,产生的“hack”是:System.Diagnostics.Process.Start(“cmd”、“/C Start”+”+destinationurl);我会重新讨论这个问题,你可以自己回答,你也可以给这个贴上标签。netcore 3.1
    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);
     }
    
            var destinationurl = "https://www.bing.com/";
            var sInfo = new System.Diagnostics.ProcessStartInfo(destinationurl)
            {
                UseShellExecute = true,
            };
            System.Diagnostics.Process.Start(sInfo);
    
        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);
            ...