2012-10-03 54 views
0

在Windows Phone的XAML頁面,一些元素有X:名稱Windows Phone的XAML元素名稱

<TextBlock x:Name="PageTitle" Text="simple" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 

,而其他人名稱

<TextBlock Name="tbSource" Height="30" HorizontalAlignment="Left" Margin="129,178,0,0" Text="Source" VerticalAlignment="Top" Width="304" /> 

的區別是什麼?

+0

可能重複。請參見[這裏](http://stackoverflow.com/questions/589874/in-wpf-what-are-the-differences-between-the-xname-and-name-attributes) – itsho

回答

0

x:部分是命名空間別名。它告訴編譯器屬性存在的位置。在這種情況下,它指向XAML的默認名稱空間。
Name屬性是在該名稱空間中的System.Object的一部分。
當您包括x:Name以在XAML中標識名爲Name的屬性時,您明確指出的是您指的是的Name屬性。由於所有對象都從此繼承,因此所有類都可以訪問它。

爲什麼會有這個問題呢?
如果您覆蓋類中的Name屬性,那麼指定名稱空間將允許您明確指出您指的是哪個版本的Name
注意事項:通過永不壓倒Name,您將爲自己節省很多痛苦。

您使用哪一個?
不,只要Name從未被覆蓋,你需要參考它的特定版本。

無論您是否使用它,可能會符合您的利益。大多數人會這樣做(就像VS爲你製造控制時一樣),所以最好讓他們留在那裏。

+0

謝謝@Matt Lacey,但是通過重寫Name屬性,你是什麼意思? – onmyway133

0

不確定,但我認爲x:Name元素可以在代碼中通過他們的名字進行訪問。例如PageTitle.Text =「一些文字」。而「名稱」只是一個元素的常規屬性。請參閱關於x:Name指令的following article

+0

使用x聲明的元素:名稱和名稱都可以通過代碼訪問。該文章很難理解@@ – onmyway133

+0

您是否看到代碼中沒有標記x:Name的變量? –