本文,你將熟悉在使用VS2019開發應用程序時可使用的許多工具、對話框和設計器。將創建一個“Hello World”應用程序、UI設計器、添加代碼並調試錯誤。
先決條件:
- 安裝Visual Studio 2019(16.3或者更高版本)。本文環境是16.8
一、創建項目
1、打開VS2019,
2、在‘開始’窗口,選擇‘創建新項目’:
3、選擇‘WPF App (.NET)’,最后選擇‘下一步’:
4、在接下來的對話框中,輸入項目名稱和指定存儲位置,最后選擇‘創建’:
到此,VS將創建項目和解決方案,“解決方案資源管理器”將顯示各種文件,WPF設計器在拆分視圖中顯示MainWindow.xaml的設計視圖和XAML視圖:
在創建項目后,可以進行自定義操作。選擇‘視圖’->‘屬性窗口’ 或者按F4,就可以顯示或更改應用程序中的項目項、控件和其他選項:
5、更改MainWindow.XAML的名稱
在‘解決方案資源管理器’中,右鍵單擊‘MainWindow.xaml’,然后選擇‘重命名’,將文件重名為“Greetings.xaml”。
二、設計用戶界面UI
選擇“Greetings.xaml”,按Shift+F7打開設計器。
接下來我們將三種類型的控件添加到此應用程序中:一個TextBlock控件,兩個RadioButton控件和一個Button控件。
添加TextBlock控件
1、選擇‘視圖’-‘工具箱’,以打開工具箱
2、在‘常用WPF控件’中找到TextBlock控件。然后將其拖拽到設計圖的窗口中。把控件居中到窗口的頂部附近。拖拽的過程中會有紅色參考線作為參考。效果如下:
XAML標記自動做如下改變:
<Grid> <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top" Margin="0,91,0,0"/> </Grid>
3、自定義TextBlock中的文本
在XAML視圖中,找到TextBlock標記,並將TextBox屬性更為“選擇一個消息選項,然后選擇顯示按鈕”:
<Grid> <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Text="選擇一個消息選項,然后選擇顯示按鈕" TextWrapping="Wrap" VerticalAlignment="Top" Margin="0,107,0,0"/> </Grid>
按Ctrl+S,以保存更改。
添加單選按鈕RadioButton
1、在工具箱中找到RadioButton控件,並拖拽兩次到設計圖窗口中。移動兩個按鈕,將其並排顯示在TextBlock控件下:
2、選中左側的RadioButton控件,在‘屬性’窗口中,將‘名稱’屬性更改為HelloButton:
3、同樣的方法,將右側的RadioButton控件的名稱屬性改為GoodbyeButton。最后保存更改。
4、為每個單選按鈕添加顯示文本
在XAML中將HelloButton和GoodbyeButton的Content屬性更新為“Hello”和“Goodbye”:
<Grid> <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Text="選擇一個消息選項,然后選擇顯示按鈕" TextWrapping="Wrap" VerticalAlignment="Top" Margin="0,107,0,0"/> <RadioButton x:Name="HelloButton" Content="Hello" HorizontalAlignment="Left" Margin="298,160,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="411,160,0,0" VerticalAlignment="Top"/> </Grid>
5、設置默認選中的單選按鈕
設置默認要選中HelloButton控件。這樣的話兩個單選按鈕始終有一個處於選中狀態。可以通過為控件添加IsChecked屬性,並將其設置為True來實現:
<Grid> <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Text="選擇一個消息選項,然后選擇顯示按鈕" TextWrapping="Wrap" VerticalAlignment="Top" Margin="0,107,0,0"/> <RadioButton x:Name="HelloButton" Content="Hello" IsChecked="True" HorizontalAlignment="Left" Margin="298,160,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="411,160,0,0" VerticalAlignment="Top"/> </Grid>
添加按鈕控件Button
1、在‘工具箱’中找到Button控件,拖拽到設計視圖窗口中RadioButton控件的下面。出現一個紅線的時候,表示居中了。
2、XAML視圖中,將Button的Content屬性更改為“顯示”。最終的XAML標記:
<Grid> <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Text="選擇一個消息選項,然后選擇顯示按鈕" TextWrapping="Wrap" VerticalAlignment="Top" Margin="0,107,0,0"/> <RadioButton x:Name="HelloButton" Content="Hello" IsChecked="True" HorizontalAlignment="Left" Margin="298,160,0,0" VerticalAlignment="Top"/> <RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left" Margin="411,160,0,0" VerticalAlignment="Top"/> <Button x:Name="button" Content="顯示" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid>
設計視圖效果:
3、向顯示按鈕添加代碼
此應用程序運行時,用戶選擇單選按鈕,再選擇‘顯示’按鈕之后,會顯示一個消息框:如果選擇HelloButton將顯示一個消息框,如果選擇GoodbyeButton則會顯示另外一個消息框。如果實現上述效果,可以將如下代碼添加到Greetings.xaml.cs文件中的Button_Click事件(設計視圖上雙擊“顯示”按鈕,會自動打開Greetings.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!"); } }
保存。
三、調試、測試應用程序
下面將調試應用程序,查找應用程序的錯誤並測試兩個消息框是否正確顯示。
1、調試和查找錯誤
按 F5或者選擇‘調試’-‘開始調試’,啟動調試程序。
將出現“中斷模式”窗口,並提示:找不到資源‘MainWindow.xaml’:
按Shift+F5 或者選擇‘調試’-‘終止調試’,停止調試程序。
2、解決錯誤
程序錯誤原因:本文開始時,我們將MainWindow.xaml重名為Greetings.xaml,但是該應用仍然引用MainWindow.xaml作為程序的啟動URI。
解決方法:將Greetings.xaml指定為啟動URI。具體操作如下:
①在‘解決方案資源管理器’中,打開App.xaml文件;
②將 StartupUri="MainWindow.xaml"更改為 StartupUri="Greetings.xaml"。
③更改窗口標題。打開Greetings.xaml,將Title設置為"問候":
Title="問候"
④保存更改
3、添加斷點以進行調試
①打開“Greetings.xaml.cs”,並選擇以下行:MessageBox.Show("Hello.")
②通過選擇 “調試” -> “切換斷點” ,從菜單中添加斷點。此時,編輯器窗口最左側邊距中該代碼行附近將顯示一個紅圈。
③選擇以下行: MessageBox.Show("Goodbye.")
。然后按F9以添加斷點。
④按F5,啟動調試。效果如下:
⑤在“問候”窗口中,選擇Hello按鈕,然后選擇“顯示”按鈕。
行 MessageBox.Show("Hello.")
將用黃色突出顯示。 在 IDE 底部,“自動”、“局部”和“監視”窗口一起停靠在左側,而“XAML綁定失敗”、“調用堆棧”、“斷點”、“異常設置”、“命令”、“即時”和“輸出”等窗口一起停靠在右側:
⑥選擇‘調試’-‘跳出’,或者按F5,應用程序將會繼續執行,並彈出帶有Hello的消息框。
⑦選擇消息框中的確定按鈕,將其關閉。
⑧在“問候”窗口中,選擇Goodbye按按鈕,然后選擇“顯示”按鈕……重復第⑤到⑦步驟。
⑨關閉應用程序,此時會自動停止調試。
⑩選擇‘調試’-‘禁用所有斷點’。此時所有的紅色的斷點換變成黑心紅圈樣式。
4、生成應用程序的發布版本
確定一切無誤后,就可以准備該應用程序的發布版本了。
①選擇‘生成’-‘清理解決方案’,刪除上一個生成過程中創建的中間文件和輸出文件。這不是必須的,但是它會清理調試生成的輸出。
②把HelloWorldApp的生成配置由“Debug”改為“Release”:
③選擇‘生成’-‘生成解決方案’。或者在解決方案資源管理器中的解決方案上,右鍵選擇‘生成解決方案’。在輸出窗口中顯示如下信息,則恭喜你完成本教程!
最終,可在解決方案和項目目錄下(...\HelloWorldApp\bin\Release\netcoreapp3.1)找到生成的.exe文件。如果在第②步驟中,設置的是Debug模式的話,則對應的目錄是…\HelloWorldApp\bin\Debug\netcoreapp3.1。