該指南從微軟(雖然有點老)解釋層和豐富的GUI應用程序的部分相當不錯:http://msdn.microsoft.com/en-us/library/ee658087.aspx
如何你實際上構建項目和文件是真的取決於你。您可以在一個項目中構建獨立應用程序。您將無法輕鬆地重新使用該代碼,但您的WPF應用程序不會注意到。
您可以用多種方式對您的課程進行分組。通過名稱空間,通過程序集(項目),嵌套類等...什麼時候使用哪個通常要重新使用或分佈在不同的機器上。
當您構建一個UI部件和一個webservice部件時,您可能會將每個部件粘貼到不同的項目中。
當您想要在網站和Windows應用程序以及電話應用程序中重新使用您的商務課程時,您可能需要將它們分別粘貼到不同的項目中。
分離爲項目可以防止在類之間創建循環依賴關係。
通常情況下,您會從引用業務層引用數據層的UI的UI中獲得一系列項目。而且您經常會看到一些涉及每個參考的交叉關注問題(例如日誌記錄和安全性)這些'層'。最後,一個圖層可以映射到一個Project(程序集)或一個名稱空間(在一個項目中)。你選擇哪一個取決於你。
在WPF項目應用程序的入口點由App.xaml中指定。你會發現一個引用主窗體加載在那裏。
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"> <-- Start up here -->
<Application.Resources>
</Application.Resources>
</Application>
實際入口點在您的項目設置中定義:
您可以在App.xaml.cs.開始任何初始化代碼最簡單的方法是訂閱OnStart
事件或OnLoadCompleted
事件。您也可以在MainWindow.xaml.cs代碼中啓動您的邏輯。將實際的邏輯放在一個單獨的類中,並引用來自OnStart或OnLoadCompleted事件。
,並添加自己的代碼有
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
}
}
一個更好的,更多的面向對象和單元測試的方法是使用Prism或MVVM Light。這些框架的範圍非常大,以至於他們自己的話題。
我不知道爲什麼你想要一個主循環。除非你打算做某種遊戲或3D渲染。在其他情況下,您可以通過向可見對象添加命令並讓Windows處理主要輸入註冊和事件分派。對於長時間運行的任務,您可以使用線程在後臺完成這些任務(different topic again)。
來自Microsoft的這份指南(儘管有點舊)很好地解釋了Rich Gui應用程序的圖層和部分:http://msdn.microsoft.com/en-us/library/ee658087.aspx – jessehouwing
@jessehouwing感謝你的鏈接,實際上我已經閱讀過它,但儘管它很好地解釋瞭如何以幾乎與實現無關的方式設計應用程序(我確信我可以在Python或Java中使用這些建議),但是我看不出如何實際上是構造代碼,特別是在Visual Studio中創建空白WPF項目之後開始構建體系結構的位置,應該創建哪個文件/文件夾/項目結構等。 – heltonbiker