C# 将已解析的字符串传递到click事件处理程序
我正在使用WebClient解析xml文件中的数据。在DownloadStringCompleted方法中,我有一个经过解析的字符串,我希望将其传递到click事件处理程序中。我希望单击事件打开我的应用程序的市场详细信息。为此,我需要一个经过解析的字符串,它是一个GUID,并将其放置在事件处理程序中。我试着用谷歌搜索,但什么也没找到。我就是不知道怎么做 我们将非常感谢您的帮助。谢谢 代码如下:C# 将已解析的字符串传递到click事件处理程序,c#,windows-phone-7.1,windows-phone-7,C#,Windows Phone 7.1,Windows Phone 7,我正在使用WebClient解析xml文件中的数据。在DownloadStringCompleted方法中,我有一个经过解析的字符串,我希望将其传递到click事件处理程序中。我希望单击事件打开我的应用程序的市场详细信息。为此,我需要一个经过解析的字符串,它是一个GUID,并将其放置在事件处理程序中。我试着用谷歌搜索,但什么也没找到。我就是不知道怎么做 我们将非常感谢您的帮助。谢谢 代码如下: public void client_DownloadStringCompleted(object s
public void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
XDocument moreApps = XDocument.Parse(e.Result);
morePageAppList.ItemsSource = from Apps in moreApps.Descendants("App")
select new MoreApps
{
MoreImage = Apps.Element("link").Value,
Price = Apps.Element("price").Value,
Title = Apps.Element("title").Value
};
var link = (from Apps in moreApps.Descendants("App")
select new MoreApps
{
AppUri = (string)Apps.Element("marketplace").Value
}).Single();
string appLink = link.AppUri;
}
private void App_Name_Click(object sender, RoutedEventArgs e)
{
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentIdentifier = "Marketplace GUID";
marketplaceDetailTask.Show();
}
更新代码:
morePageAppList.ItemsSource = from Apps in moreApps.Descendants("App")
select new MoreApps
{
MoreImage = Apps.Element("link").Value,
Price = Apps.Element("price").Value,
Title = Apps.Element("title").Value
};
var link = (from Apps in moreApps.Descendants("App")
select new MoreApps
{
AppUri = (string)Apps.Element("marketplace").Value
}).FirstOrDefault();
appLink = link.AppUri;
}
private void App_Name_Click(object sender, RoutedEventArgs e)
{
ShowMarket(appLink);
}
private void ShowMarket(string id)
{
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentIdentifier = id;
marketplaceDetailTask.Show();
}
只需将所需功能移出单击处理程序并添加一个参数。这样,您只需调用该方法并传入值
ShowMarket(link.AppUri)
编辑:回应澄清问题的评论。。。您需要做的就是将link.AppUri设置为类属性或字段,然后在单击处理程序中,只需使用该变量传递给ShowMarket(或者以您选择的方式来表示功能,即使在单击处理程序中也是如此)在我看来,有两种方法可以实现您想要的功能 1) 创建一个类范围的变量,也就是一个字段。这可以在任何类方法中看到和修改。它是类和方法之间的共享变量
2) 尝试调用App_Name_Click方法,直接将所需变量作为对象传递到sender参数中。ie
App\u Name\u Click(appLink,new RoutedEventArgs())
或者一种更整洁的方法是:App\u Name\u Click(this,new MyRoutedEventArgs(){GUID=appLink})您在哪里创建按钮?如果您通过绑定为按钮提供其内容
,则可以为其提供AppUri的标记
。我将如何使用该标记?在单击事件中,var button=(button)sender;var moreapps=(moreapps)button.Tag;MessageBox.Show(moreapps.AppUri);我还注意到一件事。你在描述中说你想进入自己的应用程序页面。如果真的是这样,你所需要做的就是根本不设置ContentIdentifier。是的,如果我只有一个应用程序,情况就是这样。我正在制作一个“更多”屏幕,上面有我所有应用程序的列表,我想从我服务器上的xml解析信息(链接、标题、价格等)。这样我就可以发布新的应用程序,只更改xml,而不是对每个应用程序进行更改。问题似乎更多的是访问按钮事件中的AppUri,而不是如何调用函数。感谢您的回复!是的,威尔梅尔是对的。我想在按钮事件中访问AppUri。即使你的例子有效,它也会自动带我去市场。我希望点击按钮就可以做到这一点。这并不明显,不确定是否真的需要否决票。我已经相应地更新了答案。我没有投反对票,其他人投了反对票。无论如何,谢谢你帮助我!现在我有个小问题。对于列表中的每个项目,该按钮都会将我带到同一个市场页面。我如何使它获得正确的Uri?我将用当前代码更新上面的代码。感谢您抽出时间回复!
private string appid;
// ..
appid = link.AppUri;
// ..
private void App_Name_Click(object sender, RoutedEventArgs e)
{
ShowMarket(appid);
}
private void ShowMarket(string id)
{
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentIdentifier = id;
marketplaceDetailTask.Show();
}