2012-04-09 90 views
0

我想通過Foreach創建許多按鈕,並且這些按鈕打印Uri的屬性。但我不知道該怎麼做。你能告訴我該怎麼做嗎? 這是我的代碼:如何通過Foreach創建按鈕?

private void CreateButtons() 
{ 
    Uri uri = new Uri("/Pages/PageTest.xaml?Name=Stephen&Age=17",UriKind.Relative); 

    foreach(var pi in typeof(Uri).GetProperties()) 
    { 
     //create button 
     Button btn = new Button(); 

     btn.Content = pi.Name; 

     btn.Margin = new Thickness(0,0,0,12); 

     //i think this is bug, but i don't know,how to do 
     btn.Click += (se,ev)=> 
     { 
      MessageBox.Show(pi.GetValue(btn,null).ToString()); 
     } 

     stackPanel.Children.Add(btn);    
    } 
} 
+0

你是否收到任何錯誤?是否顯示任何按鈕?作爲猜測,你可能是在同一位置創建按鈕,所以其中一個被繪製在其他位置 – keyboardP 2012-04-09 13:39:48

+0

Ui是正確的,我得到很多按鈕,但是當我點擊其中一個,它沒什麼可做的...... – BillyMadisonnn 2012-04-09 13:48:33

回答

0

您正在使用錯誤的目標

pi.GetValue(BTN,NULL)

您quering URI的屬性,但你的目標是按鈕對象。

你需要的東西,如:

MessageBox.Show(pi.GetValue(uri, null).ToString()); 
+0

非常感謝你,但是這樣做還是要做。 – BillyMadisonnn 2012-04-09 14:40:37

0

我猜你所得到的事件處理程序的異常。

嘗試啓用打破時拋出異常(調試|例外 - >檢查「時拋出」旁邊的公共語言運行時例外「)。

然後用附加的調試運行,看看當你點擊一個按鈕,會發生什麼情況我懷疑是NullPointerException

+0

我知道'MessageBox.Show(pi.GetValue(btn,nul l).ToString());'isn's run – BillyMadisonnn 2012-04-09 14:46:51

+0

您是否按照說明嘗試了運行?你有例外嗎? – Damian 2012-04-09 15:00:10