添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

完成本教學課程后,您會熟悉使用 Visual Studio 開發應用程式時可以使用的許多工具、對話框和設計工具。 您建立 「Hello, World」 應用程式、設計 UI、新增程式代碼和偵錯錯誤,同時瞭解如何在整合開發環境 ( IDE ) 中工作。

  • 如果您尚未安裝 Visual Studio,請前往 Visual Studio 下載 頁面免費進行安裝。
  • 請確定已安裝 .NET 桌面開發 工作負載。 您可以在 Visual Studio 安裝程式 中確認此設定。
  • 您可以針對本教學課程使用 .NET Framework 或 .NET Core。 .NET Core 是較新、更現代化的架構。 .NET Core 需要 Visual Studio 2019 16.3 版或更新版本。
  • 什麼是 WPF?

    WPF 或 Windows Presentation Foundation 是建立桌面用戶端應用程式的 UI (使用者介面) 架構。 WPF 開發平台支援一組廣泛的應用程式開發功能,包含應用程式模型、資源、控制項、圖形、版面配置、資料繫結、文件和安全性。

    WPF 是 .NET 的一部分,所以如果您之前曾使用 ASP.NET 或 Windows Forms 搭配 .NET 建置應用程式,便應該會對此程式設計體驗感到熟悉。 WPF 使用可延伸應用程式標記語言 XAML 來提供應用程式設計的宣告式模型。 如需詳細資訊,請參閱 WPF .NET 概觀

    設定 IDE

    當您啟動 Visual Studio 時,會先開啟 [開始] 視窗。 選取 [不使用程式碼繼續] 以開啟開發環境。 您會看到工具視窗、功能表和工具列,以及主視窗空間。 工具視窗停駐在應用程式視窗的左側和右側。 搜尋方塊、功能表列和標準工具列位於頂端。 當您載入方案或專案時,編輯器和設計工具會出現在應用程式視窗的中央區域。 當您開發應用程式時,您大部分時間都花在這個中央區域。

    當您在 Visual Studio 中建立應用程式時,您需要先建立一個專案和一個方案。 在此範例中,您會建立 Windows Presentation Foundation (WPF) 專案。

  • 開啟 Visual Studio。

  • 在開始視窗中,選擇 [建立新專案]

  • 在 [建立新專案] 畫面上,搜尋 "WPF"、選擇 [WPF 應用程式] ,然後選擇 [下一步]

  • 在下一個畫面上,為專案指定名稱 HelloWPFApp ,然後選擇 [下一步]

  • 在 [其他資訊] 視窗中,應該已針對目標架構選取 [.NET Core 3.1] 。 如果沒有,請選取 [.NET Core 3.1] 。 接著,選擇 [建立]

    Visual Studio 會建立 HelloWPFApp 專案和方案,而且 方案總管 會顯示各種不同檔案。 WPF 設計工具 會在分割檢視中顯示 MainWindow.xaml 的設計檢視和 XAML 檢視。 您可以滑動分隔器來增加或減少顯示任一檢視。 您可以選擇只查看視覺檢視,或只查看 XAML 檢視。

    如需 XAML (eXtensible Application Markup Language) 的詳細資訊,請參閱 WPF 的 XAML 概觀 頁面。

    建立專案之後,您可以進行自訂。 若要這麼做,請選擇 [檢視] 功能表中的 [屬性] 視窗,或按 F4 。 然後,您可以顯示和變更應用程式中專案項目、控制項及其他項目的選項。

    設計使用者介面 (UI)

    如果設計工具未開啟,請選取 mainWindow.xaml ,然後按 Shift + F7 以開啟設計工具。

    我們將三種類型的控件新增至此應用程式:一個控件、兩 RadioButton TextBlock 控件和一個 Button 控件。

    新增 TextBlock 控制項

  • Ctrl + Q 啟動搜尋方塊,然後鍵入 工具箱 。 從結果清單中選擇 [檢視] > [工具箱]

  • 在 [工具箱] 中展開 [通用 WPF 控制項] 節點以查看 TextBlock 控制項。

  • 選擇 TextBlock 項目並將它拖曳至設計介面上的視窗,即可將 TextBlock 控制項加入設計介面。 將控制項置中靠近視窗頂端。 在 Visual Studio 2019 和更新版本中,您可以使用紅色輔助線將控制項置中。

    您的視窗應該會和下圖類似:

    XAML 標記應該看起來與下列範例相似:

    <TextBlock HorizontalAlignment="Left" Margin="387,60,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/> </Grid>
  • 選擇 TextBlock 項目並將它拖曳至設計介面上的視窗,即可將 TextBlock 控制項加入設計介面。 將控制項置中靠近視窗頂端。 您可以使用輔助線將控制項置中。

    您的視窗應該會和下圖類似:

    XAML 標記應該看起來與下列範例相似:

    <TextBlock HorizontalAlignment="Left" Margin="387,60,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/> </Grid>

    自訂文字區塊中的文字

  • 在 XAML 檢視中,找出 TextBlock 的標記並將 Text 屬性從 TextBox 變更為 Select a message option and then choose the Display button.

    XAML 標記應該看起來與下列範例相似:

    <TextBlock HorizontalAlignment="Left" Margin="387,60,0,0" TextWrapping="Wrap" Text="Select a message option and then choose the Display button." VerticalAlignment="Top"/> </Grid>
  • 視需要再次將 TextBlock 置中,然後按 Ctrl+S 或使用 [檔案] 功能表項目來儲存您的變更。

    接下來,您會將兩個 RadioButton 控件新增至表單。

    新增選項按鈕

  • 在 [工具箱] 中,尋找 RadioButton 控制項。

  • 選擇 RadioButton 項目並將它拖曳至設計介面的視窗,即可將兩個 RadioButton 控制項新增至設計介面。 移動按鈕 (選取它們並使用方向鍵),讓按鈕並排顯示於 TextBlock 控制項下。 使用紅色輔助線來對齊控制項。

    您的視窗應該會像這樣:

  • 在左側 RadioButton 控制項的 [ 屬性 ] 視窗中,將 [ 名稱 ] 屬性 (在 [ 屬性 ] 視窗頂端的屬性) 變更為 HelloButton

  • 在右邊 RadioButton 控制項的 [屬性] 視窗中,將 [名稱] 屬性變更為 GoodbyeButton ,然後儲存您的變更。

    接下來,您會為每個 RadioButton 控制項新增顯示文字。 下列步驟會更新 RadioButton 控制項的 [ 內容 ] 屬性。

  • 在 [工具箱] 中,尋找 RadioButton 控制項。

  • 選擇 RadioButton 項目並將它拖曳至設計介面的視窗,即可將兩個 RadioButton 控制項新增至設計介面。 移動按鈕 (選取它們並使用方向鍵),讓按鈕並排顯示於 TextBlock 控制項下。 您可以使用輔助線來對齊控制項。

    您的視窗應該會像這樣:

  • 在左側 RadioButton 控制項的 [ 屬性 ] 視窗中,將 [ 名稱 ] 屬性 (在 [ 屬性 ] 視窗頂端的屬性) 變更為 HelloButton

  • 在右邊 RadioButton 控制項的 [屬性] 視窗中,將 [名稱] 屬性變更為 GoodbyeButton ,然後儲存您的變更。

    接下來,您會為每個 RadioButton 控制項新增顯示文字。 下列步驟會更新 RadioButton 控制項的 [ 內容 ] 屬性。

    為每個選項按鈕新增顯示的文字

  • HelloButton GoodbyeButton 這兩個選項按鈕的 [Content] 屬性更新為 XAML 中的 "Hello" "Goodbye" 。 XAML 標記現在看起來應該會類似下列範例:

    <TextBlock HorizontalAlignment="Left" Margin="252,47,0,0" TextWrapping="Wrap" Text="Select a message option and then choose the Display button." VerticalAlignment="Top"/> <RadioButton x:Name="HelloButton" Content="Hello" HorizontalAlignment="Left" Margin="297,161,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="488,161,0,0" VerticalAlignment="Top"/> </Grid>

    設定預設勾選的選項按鈕

    在此步驟中,我們預設會將 HelloButton 設定為已核取,以便一律選取這兩個單選按鈕的其中一個。

  • 在 XAML 檢視中,找出 HelloButton 的標記。

  • 加入 IsChecked 屬性,並將它設定為 True 。 具體而言,請新增 IsChecked="True"

    XAML 標記現在看起來應該會類似下列範例:

    <TextBlock HorizontalAlignment="Left" Margin="252,47,0,0" TextWrapping="Wrap" Text="Select a message option and then choose the Display button." VerticalAlignment="Top"/> <RadioButton x:Name="HelloButton" Content="Hello" IsChecked="True" HorizontalAlignment="Left" Margin="297,161,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="488,161,0,0" VerticalAlignment="Top"/> </Grid>

    您新增的最後一個 UI 元素是 Button 控件。

    新增按鈕控制項

  • 在 [工具箱] 中尋找 Button 控制項,然後將它拖曳至設計檢視中的表單,將它新增至設計介面的 RadioButton 控制項底下。 如果您使用 Visual Studio 2019 或更新版本,紅線可協助您將控制項置中。

  • 在 XAML 檢視中,將 Button 控制項的 [內容] 值從 Content="Button" 變更為 Content="Display" ,然後儲存變更。

    您的視窗應該會和下圖類似。

    XAML 標記現在看起來應該會類似下列範例:

    <TextBlock HorizontalAlignment="Left" Margin="252,47,0,0" TextWrapping="Wrap" Text="Select a message option and then choose the Display button." VerticalAlignment="Top"/> <RadioButton x:Name="HelloButton" Content="Hello" IsChecked="True" HorizontalAlignment="Left" Margin="297,161,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="488,161,0,0" VerticalAlignment="Top"/> <Button Content="Display" HorizontalAlignment="Left" Margin="377,270,0,0" VerticalAlignment="Top" Width="75"/> </Grid>
  • 在 [工具箱] 中尋找 Button 控制項,然後將它拖曳至設計檢視中的表單,將它新增至設計介面的 RadioButton 控制項底下。 輔助線可協助您將控制項置中。

  • 在 XAML 檢視中,將 Button 控制項的 [內容] 值從 Content="Button" 變更為 Content="Display" ,然後儲存變更。

    您的視窗應該類似以下的螢幕擷取畫面。

    XAML 標記現在看起來應該會類似下列範例:

    <TextBlock HorizontalAlignment="Left" Margin="252,47,0,0" TextWrapping="Wrap" Text="Select a message option and then choose the Display button." VerticalAlignment="Top"/> <RadioButton x:Name="HelloButton" Content="Hello" IsChecked="True" HorizontalAlignment="Left" Margin="297,161,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="488,161,0,0" VerticalAlignment="Top"/> <Button Content="Display" HorizontalAlignment="Left" Margin="377,270,0,0" VerticalAlignment="Top" Width="75"/> </Grid>

    將程式碼新增至顯示按鈕

    此應用程式執行時,會在使用者選擇選項按鈕並選擇 [顯示] 按鈕之後顯示訊息方塊。 Hello 會出現一個消息框,另一個消息框會顯示為 Goodbye。 若要建立此行為,請將程式代碼新增至 Button_Click MainWindow.xaml.cs 中的 事件。

  • 在設計介面上,按兩下 [ 顯示 ] 按鈕。

    MainWindow.xaml.cs 隨即開啟,並將游標置於 Button_Click 事件中。

    private void Button_Click(object sender, RoutedEventArgs e)
    
  • 輸入下列程式碼:

    if (HelloButton.IsChecked == true)
         MessageBox.Show("Hello.");
    else if (GoodbyeButton.IsChecked == true)
        MessageBox.Show("Goodbye.");
    
  • 儲存應用程式。

    此應用程式執行時,會在使用者選擇選項按鈕並選擇 [顯示] 按鈕之後顯示訊息方塊。 Hello 會出現一個消息框,另一個消息框會顯示為 Goodbye。 若要建立此行為,請將程式代碼新增至 Button_Click MainWindow.xaml.cs中的事件。

  • 在設計介面上,按兩下 [ 顯示 ] 按鈕。

    MainWindow.xaml.cs 隨即開啟,並將游標置於 Button_Click 事件中。

    private void Button_Click(object sender, RoutedEventArgs e)
    

    當您按兩下 [ 顯示 ] 按鈕時, Click="Button_Click" 會新增至 XAML。

    XAML 標記現在看起來應該會類似下列範例:

    <TextBlock HorizontalAlignment="Left" Margin="252,47,0,0" TextWrapping="Wrap" Text="Select a message option and then choose the Display button." VerticalAlignment="Top"/> <RadioButton x:Name="HelloButton" Content="Hello" IsChecked="True" HorizontalAlignment="Left" Margin="297,161,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="488,161,0,0" VerticalAlignment="Top"/> <Button Content="Display" HorizontalAlignment="Left" Margin="377,270,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> </Grid>
  • 輸入下列程式碼:

    if (HelloButton.IsChecked == true)
         MessageBox.Show("Hello.");
    else if (GoodbyeButton.IsChecked == true)
        MessageBox.Show("Goodbye.");
    
  • 儲存應用程式。

    偵錯和測試應用程式

    接下來,您要對應用程式進行偵錯,以尋找錯誤並測試這兩個消息框都正確顯示。 下列指示會告訴您如何建置和啟動偵錯工具,不過您稍後也可閱讀 建置 WPF 應用程式 (WPF)對 WPF 進行偵錯以取得詳細資訊。

    變更 MainWindow.xaml 的名稱

    讓我們給 MainWindow 一個更具體的名稱。 在 [方案總管] 中,以滑鼠右鍵按一下 MainWindow.xaml,然後選擇 [重新命名]。 將檔案重新命名為 Greetings.xaml

    尋找和修正錯誤

    在此步驟中,您會發現我們稍早變更MainWindow.xaml檔案的名稱所造成的錯誤。

    開始偵錯並找出錯誤

  • F5 或依序選取 [偵錯] 和 [開始偵錯],來啟動偵錯工具。

    [ 中斷模式 ] 視窗隨即出現,[ 輸出 ] 視窗指出已發生 IOException: 找不到資源 mainwindow.xaml

  • 選擇 [偵錯]>[停止偵錯] 停止偵錯工具。

    我們已將 MainWindow.xaml 重新命名為 Greetings.xaml,但程式碼仍會參考 MainWindow.xaml 作為應用程式的啟動 URI,因此專案無法啟動。

  • F5 或依序選取 [偵錯] 和 [開始偵錯],來啟動偵錯工具。

    [ 中斷模式 ] 視窗隨即出現,[ 輸出 ] 視窗指出已發生 IOException: 找不到資源 mainwindow.xaml

  • 選擇 [偵錯]>[停止偵錯] 停止偵錯工具。

    我們已在這個教學課程開始時,將 MainWindow.xaml 重新命名為 Greetings.xaml,但程式碼仍會參考 MainWindow.xaml 作為應用程式的啟動 URI,因此專案無法啟動。

    指定 Greetings.xaml 作為啟動 URI

  • 在 [方案總管]中,開啟 App.xaml 檔。

  • StartupUri="MainWindow.xaml" 變更為 StartupUri="Greetings.xaml",然後儲存變更。

    在選擇性步驟中,您可以避免混淆變更應用程式視窗的標題,以符合這個新名稱。

  • 在 [方案總管] 中,開啟您剛才重新命名的 Greetings.xaml 檔案。

  • Window.Title 屬性值從 Title="MainWindow" 變更為 Title="Greetings",然後儲存變更。

    再次啟動偵錯工具 (按 F5)。 您現在應該會看到應用程式的 Greetings 視窗。

    立即關閉應用程式視窗停止偵錯。

    使用中斷點進行偵錯

    新增一些中斷點,即可在偵錯時測試程式碼。 您可以選擇 [偵錯]>[切換中斷點],或是在您要中斷的程式碼行旁邊,按一下編輯器的左邊界,或按 F9 來新增中斷點。

    新增中斷點

  • 開啟 Greetings.xaml.cs,然後選取下列程式碼行:MessageBox.Show("Hello.")

  • 依序選取 [ 偵錯] 和 [ 切換中斷點],以新增中斷點。

    在編輯器視窗最左緣、程式碼行的旁邊會出現一個紅色圓圈。

  • 請選取下列程式碼行: MessageBox.Show("Goodbye.")

  • F9 鍵新增中斷點,然後按 F5 開始偵錯。

  • 在 [ Greetings ] 視窗中,選擇 [ Hello ] 選項按鈕,然後選擇 [ 顯示 ] 按鈕。

    程式碼行 MessageBox.Show("Hello.") 會以黃色反白顯示。 在 IDE 底部,[自動變數]、[區域變數] 和 [監看式] 視窗會一起停駐在左邊,而 [呼叫堆疊]、[中斷點]、[例外狀況設定]、[命令]、[即時運算] 和 [輸出] 視窗會一起停駐在右邊。

  • 在功能表列上,選擇 [偵錯]>[跳離函式]

    應用程式會繼續執行,而且會顯示含有文字 "Hello" 的訊息方塊。

  • 選擇訊息方塊上的 [ 確定 ] 按鈕將它關閉。

  • 在 [ Greetings ] 視窗中,選擇 [ Goodbye ] 選項按鈕,然後選擇 [ 顯示 ] 按鈕。

    程式碼行 MessageBox.Show("Goodbye.") 會以黃色反白顯示。

  • 選擇 F5 鍵繼續偵錯。 當訊息方塊出現時,選擇訊息方塊中的 [ 確定 ] 按鈕關閉它。

  • 關閉應用程式視窗停止偵錯。

  • 在功能表列上,選擇 [偵錯]>[停用所有中斷點]

  • 開啟 Greetings.xaml.cs,然後選取下列程式碼行:MessageBox.Show("Hello.")

  • 依序選取 [ 偵錯] 和 [ 切換中斷點],以新增中斷點。

    在編輯器視窗最左緣、程式碼行的旁邊會出現一個紅色圓圈。

  • 請選取下列程式碼行: MessageBox.Show("Goodbye.")

  • F9 鍵新增中斷點,然後按 F5 開始偵錯。

  • 在 [ Greetings ] 視窗中,選擇 [ Hello ] 選項按鈕,然後選擇 [ 顯示 ] 按鈕。

    程式碼行 MessageBox.Show("Hello.") 會以黃色反白顯示。 在 IDE 底部,[自動變數]、[區域變數] 和 [監看式] 視窗會一起停駐在左邊,而 [呼叫堆疊]、[中斷點]、[例外狀況設定]、[命令]、[即時運算] 和 [輸出] 視窗會一起停駐在右邊。

  • 在功能表列上,選擇 [偵錯]>[跳離函式]

    應用程式會繼續執行,而且會顯示含有文字 "Hello" 的訊息方塊。

  • 選擇訊息方塊上的 [ 確定 ] 按鈕將它關閉。

  • 在 [ Greetings ] 視窗中,選擇 [ Goodbye ] 選項按鈕,然後選擇 [ 顯示 ] 按鈕。

    程式碼行 MessageBox.Show("Goodbye.") 會以黃色反白顯示。

  • 選擇 F5 鍵繼續偵錯。 當訊息方塊出現時,選擇訊息方塊中的 [ 確定 ] 按鈕關閉它。

  • 關閉應用程式視窗停止偵錯。

  • 在功能表列上,選擇 [偵錯]>[停用所有中斷點]

    UI 元素的表示法

    在執行中的應用程式中,您應該會看到視窗頂端顯示的小工具。 小工具是執行階段協助程式,可讓您快速存取一些實用的偵錯功能。 選取第一個按鈕,移至即時視覺化樹狀結構。 您應該會看到含有樹狀結構的視窗,其中包含您頁面的所有視覺元素。 展開節點以尋找您所新增的按鈕。

    既然已經驗證應用程式的運作一切正常,您就可以準備其發行組建。

  • 在主功能表上,選取 [組建]>[清除方案],刪除在上一個組建期間建立的中繼檔和輸出檔。 此步驟並非必要,但可清除偵錯組建輸出。

  • 使用工具列上的下拉式控制項 (它目前的名稱是 "Debug"),將 HelloWPFApp 的建置組態從 [偵錯] 變更為 [發行]

  • 選擇 [建置]>[建置方案] 來建置方案。

    恭喜您完成此教學課程! 您可在方案和專案目錄 (...\HelloWPFApp\HelloWPFApp\bin\Release) 下找到您建置的 .exe

    恭喜您完成此教學課程! 若要更深入了解,請繼續下列教學課程。

    繼續進行其他 WPF 教學課程

  • 生產力祕訣
  •