C# 如何将URL从ListView项目传递到web浏览器URL

C# 如何将URL从ListView项目传递到web浏览器URL,c#,uwp,C#,Uwp,如何将列表视图项中的URL数据传递到web浏览器以打开?由于某种原因,我当前的代码无法工作 当前上下文中不存在名称“item” 页面类 public sealed partial class MainPage : Page { public List<ListItem> listItemCompanies; public MainPage() { this.InitializeComponent

如何将列表视图项中的URL数据传递到web浏览器以打开?由于某种原因,我当前的代码无法工作

当前上下文中不存在名称“item”

页面类

    public sealed partial class MainPage : Page
    {
        public List<ListItem> listItemCompanies;

        public MainPage()
        {
            this.InitializeComponent();

            listItemCompanies = ItemManager.GetListItems();
        }

        private async void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();

            foreach (var item in e.AddedItems)
            {
                showWebsite();
            }
        }

        private async void showWebsite()
        {
            var title = item as ListItem;

            var uriWeb = new Uri(title.CompanyURL);
            var uriSuccess = await Launcher.LaunchUriAsync(uriWeb);
        }
    }
}
namespace MyApp.Models
{
    public class ListItem
    {
        public string CompanyTitle { get; set; }
        public string CompanyURL { get; set; }
    }

    public class ItemManager
    {
        public static List<ListItem> GetListItems()
        {    
            var items = new List<ListItem>
            {
                new ListItem { CompanyTitle = "Apple", CompanyURL = "www.apple.com" },
                new ListItem { CompanyTitle = "Google", CompanyURL = "www.google.com" },
                new ListItem { CompanyTitle = "Microsoft", CompanyURL = "www.microsoft.com" }
            };

            return items;
        }
    }
}
公共密封部分类主页面:第页
{
上市公司;
公共主页()
{
this.InitializeComponent();
ListItemCompanys=ItemManager.GetListItems();
}
私有异步无效列表视图\u SelectionChanged(对象发送方,SelectionChangedEventArgs e)
{
var resourceLoader=Windows.ApplicationModel.Resources.resourceLoader.GetForCurrentView();
foreach(e.AddedItems中的变量项)
{
showWebsite();
}
}
私有异步void showWebsite()
{
var title=项目作为列表项目;
var uriWeb=新Uri(title.CompanyURL);
var uriSuccess=await Launcher.launchurisync(uriWeb);
}
}
}
列出项目类别

    public sealed partial class MainPage : Page
    {
        public List<ListItem> listItemCompanies;

        public MainPage()
        {
            this.InitializeComponent();

            listItemCompanies = ItemManager.GetListItems();
        }

        private async void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();

            foreach (var item in e.AddedItems)
            {
                showWebsite();
            }
        }

        private async void showWebsite()
        {
            var title = item as ListItem;

            var uriWeb = new Uri(title.CompanyURL);
            var uriSuccess = await Launcher.LaunchUriAsync(uriWeb);
        }
    }
}
namespace MyApp.Models
{
    public class ListItem
    {
        public string CompanyTitle { get; set; }
        public string CompanyURL { get; set; }
    }

    public class ItemManager
    {
        public static List<ListItem> GetListItems()
        {    
            var items = new List<ListItem>
            {
                new ListItem { CompanyTitle = "Apple", CompanyURL = "www.apple.com" },
                new ListItem { CompanyTitle = "Google", CompanyURL = "www.google.com" },
                new ListItem { CompanyTitle = "Microsoft", CompanyURL = "www.microsoft.com" }
            };

            return items;
        }
    }
}
名称空间MyApp.Models
{
公共类列表项
{
公共字符串CompanyTitle{get;set;}
公共字符串CompanyURL{get;set;}
}
公共类项目管理器
{
公共静态列表GetListItems()
{    
var items=新列表
{
新列表项{CompanyTitle=“Apple”,CompanyURL=“www.Apple.com”},
新列表项{CompanyTitle=“Google”,CompanyURL=“www.Google.com”},
新列表项{CompanyTitle=“Microsoft”,CompanyURL=“www.Microsoft.com”}
};
退货项目;
}
}
}
基于的文档,URI基本上有三个组件,第一部分是scheme。以web URL为例,方案部分为“http://”。因此,当您尝试创建Uri类时,还需要传递“http://”,而不仅仅是“www.apple.com”。此外,当触发ListView\u SelectionChanged事件时,您可以调用ListView的SelectedItem属性以获取当前单击的模型。例如:

private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    object item = (sender as ListView).SelectedItem;
    showWebsite(item);
}

private async void showWebsite(object item)
{
    var title = item as ListItem;

    var uriWeb = new Uri("http://" + title.CompanyURL);
    var uriSuccess = await Launcher.LaunchUriAsync(uriWeb);
}
更新:

如果要使用ItemClick事件,需要将ListView的IsItemClickEnabled设置为True

.xaml:

<ListView ... IsItemClickEnabled="True" ItemClick="ListView_ItemClick">
    ......
</ListView>
基于的文档,URI基本上有三个组件,第一部分是scheme。以web URL为例,方案部分为“http://”。因此,当您尝试创建Uri类时,还需要传递“http://”,而不仅仅是“www.apple.com”。此外,当触发ListView\u SelectionChanged事件时,您可以调用ListView的SelectedItem属性以获取当前单击的模型。例如:

private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    object item = (sender as ListView).SelectedItem;
    showWebsite(item);
}

private async void showWebsite(object item)
{
    var title = item as ListItem;

    var uriWeb = new Uri("http://" + title.CompanyURL);
    var uriSuccess = await Launcher.LaunchUriAsync(uriWeb);
}
更新:

如果要使用ItemClick事件,需要将ListView的IsItemClickEnabled设置为True

.xaml:

<ListView ... IsItemClickEnabled="True" ItemClick="ListView_ItemClick">
    ......
</ListView>

你需要建立一个表。看:为什么?做这么简单的事。什么是简单的?ListItem是一个对象,您使用什么来查看该对象?您需要一个方法来查看网页上的数据。正确,这是我在
showWebsite
中创建的,但显然'title'变量的代码不正确。我不想画一张表;To:var title=ItemManager.gerListItems()[0];你需要建立一个表。看:为什么?做这么简单的事。什么是简单的?ListItem是一个对象,您使用什么来查看该对象?您需要一个方法来查看网页上的数据。正确,这是我在
showWebsite
中创建的,但显然'title'变量的代码不正确。我不想画一张表;To:var title=ItemManager.gerListItems()[0];为什么我需要使用
SelectionChanged
事件处理程序而不是
ItemClick
事件处理程序?这两个事件都可以,因为最初您显示了上面的SelectionChanged,我直接使用此事件来演示。如果你想使用ItemClick事件,你可以检查我更新的答案。为什么我需要使用
SelectionChanged
事件处理程序而不是
ItemClick
事件处理程序?这两个事件都是可以的,因为最初你显示了上面的SelectionChanged,我直接使用这个事件来演示。如果您想使用ItemClick事件,您可以检查已更新的“我的答案”。