2010-02-17 88 views
4

我見過很多,我不知道它是什麼意思。我會說它與命名空間有關?我已經使用了它,但我不清楚它的目的是什麼。什麼是WPF中的x:東西?

任何人都可以解釋它是什麼以及它通常在哪些情況下使用?

由於

編輯:

<Window x:Class="WpfApplication8.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
    </Grid> 
</Window> 

但是,例如,在上述代碼中,我定義x作爲用於在第三行上的XAML命名空間的別名,雖然我使用在第一行代碼中也是相同的x。這是如何發生的?它不關心事物出現的順序?

EDIT2: 糾正我,如果我錯了:

窗口x:類= 「WpfApplication8.MainWindow」

上面的代碼就會把從窗口派生的類中x:WpfApplication8.MainWindow命名空間,而

窗口x:Name =「abc」

將在x命名空間中放入一個名爲abc的Window類實例。是對的嗎?

如果我是對的,如果我沒有使用x別名,那麼類(第一種情況)和實例(第二種)兩種情況都放在哪裏?無處不在,有點像非常類型?他們被使用,但他們所在的地方沒有定義?

+1

我已經更新了我的答案,以迴應您的編輯,我希望它有幫助。 – Rory 2010-02-17 05:54:15

+1

再次更新。我想你應該看一下http://msdn.microsoft.com/en-us/library/ms747122.aspx以獲取有關XAML概念的介紹。 – Rory 2010-02-17 06:24:21

回答

11

你是對的,它是一個XML命名空間別名。如果你看看你的xaml文件的頂部,你會發現它映射到http://schemas.microsoft.com/winfx/2006/xaml命名空間。稍後使用前綴允許xaml解析器找到在該名稱空間中定義的類,而不必輸入整個事物。它與C#中的using alias = very.long.namespace;語法沒有什麼不同。

您通常需要爲打算在xaml文件中使用的每個名稱空間設置不同的別名。當使用PRISM時常見的是將cal映射到clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation;然後您可以使用cal:RegionManager訪問在該CLR名稱空間中定義的RegionManager類。使用Expression Blend時,您經常會發現它會添加xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"以允許其設計時間功能(爲美工板上的用戶控件設置寬度和高度)。


對問題編輯:你可能想看看的XML Namespace tutorial,這是在XAML繼承了這一功能。在你的例子中,你需要停止將這些行作爲單獨的指令,因爲它們在程序代碼中,而是將整個元素視爲一個整體。我想說的是,因爲xmlns:x出現在Window元素中,所以它可以被該元素及其包含的每個子元素訪問,它出現的實際行並不重要,因爲xaml不像上面的程序那樣執行代碼是。


對問題編輯2:x:Class attribute告訴編譯器從XAML文件生成的部分類的名稱應該是什麼(如果這是你的「的意思會把從窗口派生的類...「,那麼你是正確的)。

你方式關閉在第二部分中,x:Name attribute告訴編譯器產生在含有以元素的引用的類中的字段,其屬性被附接。這意味着,在您的示例中,您的代碼隱藏文件將能夠使用this.abc來引用xaml標記中定義的Window元素。

+0

謝謝。但我仍然沒有完全明白。我編輯了我原來的帖子。 – 2010-02-17 05:40:11

+0

只是最後一個問題,在我原來的帖子中編輯。 – 2010-02-17 05:59:43

2

這是一個名稱空間定義別名。

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

它的作用就像一個短手或using/import聲明。

通過在標籤屬性中定義命名空間,您可以保證在正確的空間中使用了正確的屬性。

您可能已經注意到,當您希望使用自定義WPF控件時,您必須添加自己的程序集名稱空間別名。

相關問題