C# 如何将URL从ListView项目传递到web浏览器URL
如何将列表视图项中的URL数据传递到web浏览器以打开?由于某种原因,我当前的代码无法工作 当前上下文中不存在名称“item” 页面类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
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事件,您可以检查已更新的“我的答案”。