看來,XAML文件應該在C#項目中有相應的.cs文件。我知道Visual Studio爲我們做了所有的事情。我只是好奇他們是如何連接在一起的?我的意思是,它們是在項目文件中指定的,還是僅僅因爲它們具有相同的名稱?另外,App.xaml文件指定了啓動文件,但編譯器如何知道?是否可以指定App.xaml以外的其他文件來執行與App.xaml相同的操作?XAML文件如何與cs文件關聯?
回答
WPF中沒有什麼神奇的事情發生。所有發生的事情都寫在哪裏。它是生成一些代碼的VS。
xaml代碼與類關聯。
<Window x:Class="YourNameSpace.MainWindow" ...
VS爲您生成其中有一個名爲Window
型MainWindow
類MainWindow.cs文件。這裏的類型很重要。如果使用其他類型,編譯器將不會將其鏈接到MainWindow.xaml,即使它是正確的類名稱。 最終,對於UserControl,您將使用xaml標記<UserControl
而不是Window
標記。
還有一件事,編譯器在編譯時還會在obj
文件夾中生成一個名爲MainWindow.g.cs
的文件,您還可以在其中找到編譯版本的xaml文件。 該文件將包含一個部分類MainWindow,並聲明您在XAML中使用的所有控件。這是編譯器所做的與XAML和相關類之間的關聯無關的場景作業的背後。
應用程序是相同的,只是類的類型發生了變化。這是將XAML與類連接起來。 對於啓動窗口,默認情況下,它在XAML文件中指定給一個類。但是,您可以自定義.cs文件並在ApplicationStartUp事件中執行您自己的邏輯。
與關機事件相同。默認情況下,當所有窗口關閉時,您可以將其更改爲MainWindow關閉或顯式關閉時。
csproj(在c#的情況下)告訴編譯器哪個類是應用程序。
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
不僅像其他人的XAML標籤已經說過。該標籤只定義類的類型,不要讓你的程序從這個特定的類開始。
Application overview http://i.msdn.microsoft.com/dynimg/IC144461.png
你可以讀出更多的位置: MSDN - Building WPF application
後面的代碼定義了派生自Window
,UserControl
,...的類,然後XAML的根元素引用與x:Class
屬性一起鍵入。
App.xaml
是啓動項,因爲它有一個<Application>
根元素,它使用相同的機制來引用後面的代碼。
- 1. 文件不與任何文件關聯type.Please定義的關聯
- 2. 如何將.sh文件與Cygwin關聯?
- 3. WP 7.5:從cs文件導航到庫中的xaml文件
- 4. 訪問在cs文件XAML文件的元素在WPF
- 5. 如何訪問另一個cs文件中xaml文件上的KinectSensorchooser對象?
- 6. 如何在Visual Studio 2010中的.xaml文件中摺疊.cs文件?
- 7. 如何找到與.cache.html文件關聯的java文件
- 8. 如何添加與lib文件關聯的.pdb文件?
- 9. 如何從.cs文件導航到Monogame中的.xaml?
- 10. 如何將按鈕屬性從XAML傳遞給.CS文件
- 11. 文件關聯
- 12. 文件關聯
- 13. 如何使include()文件與不同的PHP文檔相關聯?
- 14. 文件夾如何與Workfront中的文檔關聯?
- 15. 如何將.cs文件關聯到Visual Studio中的特定設計器?
- 16. Python文件關聯
- 17. Uncrustify文件關聯
- 18. Android文件關聯
- 19. ClickOnce文件關聯
- 20. iOS文件關聯
- 21. 如何在另一個XAML文件中加載XAML文件
- 22. 如何解析XAML文件?
- 23. 其他Xaml文件中的Xaml文件
- 24. 如何將文件擴展名與MIME類型與Cheyenne關聯?
- 25. 如何獲取XSD文件中的更改會影響相關的CS文件?
- 26. 兩個XAML文件可以在WPF中有一個cs文件嗎?
- 27. * .xib,* .m和* .h文件如何關聯?
- 28. 如何刪除文件關聯
- 29. 如何使用c#關聯文件?
- 30. 相關聯的空混帳與文件
請不要在標題重複標記(C#WPF)。 – 2010-06-05 14:45:54
請注意,使用相同的機制將WPF + VB項目中的VB代碼關聯起來,這裏沒有任何特定於C#的內容(只要將「.cs」替換爲「.vb」的示例文件名)。 – Richard 2010-06-05 15:37:14