2012-01-05 42 views
0

我正在使用WebClient從xml文件解析數據。在DownloadStringCompleted方法中,我有一個字符串,它被解析,我想傳入一個單擊事件處理程序。我想要點擊事件來打開我的應用程序的市場細節。爲此,我需要一個解析的字符串,它是一個GUID並將其放置在事件處理程序中。我試圖谷歌它並沒有發現。我只是無法弄清楚如何去做。將解析的字符串傳遞到單擊事件處理程序中

任何幫助將不勝感激。謝謝!

下面的代碼:

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(); 
    } 
+0

你在哪裏創建按鈕?如果您通過綁定將該按鈕的「內容」賦予,您可以給它一個AppUri的「標籤」。 – 2012-01-05 20:57:30

+0

我將如何使用標籤? – 2012-01-05 21:35:15

+0

在您的點擊事件中,var button =(Button)sender; var moreapps =(MoreApps)button.Tag; MessageBox.Show(moreapps.AppUri); – 2012-01-05 21:38:33

回答

1

只需將您所需的功能出單擊處理的並添加參數。這樣的話,你可以調用該方法,並傳遞值ShowMarket(link.AppUri)

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(); 
} 

編輯:響應評論澄清的問題......所有你需要做的是設置link.AppUri到一個類屬性或字段,然後在點擊處理程序中,只需使用該變量傳遞給ShowMarket(或者您選擇表達功能,即使在點擊處理程序中)

+0

似乎這個問題更多的是關於訪問按鈕事件中的AppUri,而不是如何調用一個函數。 – 2012-01-05 21:07:25

+0

謝謝你的回覆!是的,Willmel是正確的。我想在按鈕事件中訪問AppUri。儘管您的示例有效,但它會自動將我帶到市場。我想點擊按鈕來做到這一點。 – 2012-01-05 21:33:02

+0

這是不明顯的,不知道downvote真的需要。我已經相應地更新了答案。 – 2012-01-05 21:35:57

-2

正如我所看到的,有兩種方法做你想做的事。

1)創建一個類變量,又名字段。這可以在任何類的方法中看到和修改。它是類方法之間的共享變量。

2)嘗試調用App_Name_Click方法,直接在sender參數中傳遞想要作爲對象的變量。即App_Name_Click(appLink, new RoutedEventArgs())或更整潔的方式是這樣做的:App_Name_Click(this, new MyRoutedEventArgs(){GUID = appLink})

+0

#2會如何工作? – 2012-01-05 21:13:05

+0

感謝您花時間回覆! – 2012-01-05 21:58:27

相關問題