2014-03-28 91 views
0

我想投WrapPanel鑄造和使用結果在一行

wp = (WrapPanel)topSP.Children[0]; 
wp.Children.Add(txtB1); 

,這樣它看起來就像是

topSP.Children[0](WrapPanel).Add(txtB1); 

這可能嗎?

+2

這種性能和鑄件的「鏈接」追空引用時,可能會導致大量的工作並索引超出範圍的例外。將它們保持在不同的行上,並檢查是否存在空值和索引範圍。 –

回答

4
((WrapPanel)topSP.Children[0]).Children.Add(txtB1); 

請注意,可能有更好的方法。但這應該工作。

1

裹投括號,你是好去 -

((WrapPanel)topSP.Children[0]).Children.Add(txtB1); 
1

改變類型的另一種方法是這樣的:

(topSP.Children[0] as WrapPanel).Children.Add(txtB1); 

這是不一樣的演員,彷彿topSP.Children[0]不是WrapPanel,這將拋出NullReferenceException,如在那種情況下(topSP.Children[0] as WrapPanel) == null

+0

真的嗎? Downvoted?請仔細解釋一下,爲什麼你低估了一個完全有效的答案? –

+2

儘管我沒有對任何東西(既不是你的也不是Rohits)投票,我認爲你根據保羅的兩個班輪失蹤了一個'.Children'的等級。 – nvoigt

+0

@nvoigt好的地方。看到你有同樣的問題:-)解決了這個問題。然而,並不是簡單的評論就足以讓它得到修復。 –

2

是你可以,但性能和鑄件的這一切的「鏈接」可以追空引用和索引超出範圍異常時,會導致大量的工作。將它們保持在不同的行上,並檢查是否存在空值和索引範圍。

因此,即使這可能工作:

((WrapPanel)topSP.Children[0]).Children.Add(txtB1); 

它是更安全做到這一點:

if(topSP.Children.Count > 0) 
{ 
    var wrapPanel = topSP.Children[0] as WrapPanel; 
    if(wrapPanel != null) 
    { 
     wrapPanel.Children.Add(txtB1); 
    } 
}