WPF佈局的應用

来源:https://www.cnblogs.com/laizhenghong2012/archive/2018/04/19/8882203.html
-Advertisement-
Play Games

一 寫在開頭1.1 本文內容本文主要內容是使用WPF來實現幾個簡單的界面。 二 登錄視窗小例子2.1 實現代碼XAML代碼: 邏輯代碼: 上面的邏輯代碼中有個需要註意的地方。在WPF中TextBox和PasswordBox這兩個輸入框在用戶沒有輸入的時候返回值為空字元串(即"")而不是null! 2 ...


一 寫在開頭
1.1 本文內容
本文主要內容是使用WPF來實現幾個簡單的界面。

二 登錄視窗小例子
2.1 實現代碼
XAML代碼:

 1 <Window x:Class="LoginDialog.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="Login" Height="200" Width="400">
 5     <Grid>
 6         <Grid>
 7             <Grid.RowDefinitions>
 8                 <RowDefinition></RowDefinition>
 9                 <RowDefinition></RowDefinition>
10                 <RowDefinition></RowDefinition>
11             </Grid.RowDefinitions>
12             <Grid.ColumnDefinitions>
13                 <ColumnDefinition></ColumnDefinition>
14                 <ColumnDefinition></ColumnDefinition>
15             </Grid.ColumnDefinitions>
16             <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5" Grid.Row="0" Grid.Column="0" Text="用戶名:" FontSize="18px"></TextBlock>
17             <TextBox Name="tbUserName" Margin="5" Grid.Row="0" Grid.Column="1"></TextBox>
18             <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5" Grid.Row="1" Grid.Column="0" Text="密碼:" FontSize="18px"></TextBlock>
19             <PasswordBox Name="pbPassword" Margin="5" Grid.Row="1" Grid.Column="1"></PasswordBox>
20             <Button Name="btnLogin" Margin="10" Grid.Row="2" Grid.Column="0" Content="登錄" FontSize="18px" Click="btnLogin_Click"></Button>
21             <Button Name="btnCancel" Margin="10" Grid.Row="2" Grid.Column="1" Content="取消" FontSize="18px"></Button>
22         </Grid>
23     </Grid>
24 </Window>

 

 

邏輯代碼:

 1 private void btnLogin_Click(object sender, RoutedEventArgs e)
 2 {
 3     string username = tbUserName.Text;
 4     string password = pbPassword.Password;
 5 
 6     if ((username == "") || (password == ""))
 7     {
 8         MessageBox.Show("用戶名或密碼不能為空!");
 9     }
10     else
11     {
12         if ((username == "admin") && (password == "123"))
13         {
14             MessageBox.Show("登錄成功!");
15         }
16         else
17         {
18             MessageBox.Show("用戶名或密碼錯誤!");
19         }
20     }
21 }

上面的邏輯代碼中有個需要註意的地方。在WPF中TextBox和PasswordBox這兩個輸入框在用戶沒有輸入的時候返回值為空字元串(即"")而不是null!

2.2 效果圖

 

三 連連看游戲界面的實現
3.1 實現代碼
XAML代碼:

1 <Window x:Class="連連看.MainWindow"
2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4         Title="MainWindow" Height="600" Width="600" Loaded="Window_Loaded">
5     <Grid>
6         <Grid Name="gridGame"></Grid>
7     </Grid>
8 </Window>

為什麼XAML里只有一個名為gridGame的Grid佈局?因為界面中的元素在下麵的邏輯代碼中動態地創建了。

邏輯代碼:

 1 private void Window_Loaded(object sender, RoutedEventArgs e)
 2 {
 3     // 修改視窗標題
 4     this.Title = "連連看";
 5 
 6     // 動態設定gridGame為10行10列
 7     for (int i = 0; i < 10; i++)
 8     {
 9         RowDefinition rd = new RowDefinition();
10         gridGame.RowDefinitions.Add(rd);
11 
12         ColumnDefinition cd = new ColumnDefinition();
13         gridGame.ColumnDefinitions.Add(cd);
14     }
15 
16     // 隨機數產生器
17     Random random = new Random();
18 
19     // 隨機產生圖片名稱並填入10行10列的格子中
20     for (int i = 0; i < 10; i++)
21     {
22         for (int j = 0; j < 10; j++)
23         {
24             Image img = new Image();
25             int imgNum = random.Next(1, 10);
26             img.Source = new BitmapImage(new Uri("img/" + imgNum + ".png", UriKind.Relative));
27             Grid.SetRow(img, i);
28             Grid.SetColumn(img, j);
29             gridGame.Children.Add(img);
30         }
31     }
32 }

 

3.2 效果圖

 

四 Windows計算器界面的實現
4.1 實現代碼
XAML代碼:

 1 <Window x:Class="計算器.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="計算器" Height="332" Width="228">
 5     <Grid>
 6         <DockPanel>
 7             <Menu DockPanel.Dock="Top">
 8                 <MenuItem Header="查看"></MenuItem>
 9                 <MenuItem Header="編輯"></MenuItem>
10                 <MenuItem Header="幫助"></MenuItem>
11             </Menu>
12             <Grid>
13                 <Grid.RowDefinitions>
14                     <RowDefinition></RowDefinition>
15                     <RowDefinition></RowDefinition>
16                     <RowDefinition></RowDefinition>
17                     <RowDefinition></RowDefinition>
18                     <RowDefinition></RowDefinition>
19                     <RowDefinition></RowDefinition>
20                     <RowDefinition></RowDefinition>
21                 </Grid.RowDefinitions>
22                 <Grid.ColumnDefinitions>
23                     <ColumnDefinition></ColumnDefinition>
24                     <ColumnDefinition></ColumnDefinition>
25                     <ColumnDefinition></ColumnDefinition>
26                     <ColumnDefinition></ColumnDefinition>
27                     <ColumnDefinition></ColumnDefinition>
28                 </Grid.ColumnDefinitions>
29                 <TextBlock Grid.Row="0" Grid.Column="0" FontSize="18px" TextAlignment="Right" Text="0" Grid.ColumnSpan="5"></TextBlock>
30                 <Button Grid.Row="1" Grid.Column="0" Content="MC"></Button>
31                 <Button Grid.Row="1" Grid.Column="1" Content="MR"></Button>
32                 <Button Grid.Row="1" Grid.Column="2" Content="MS"></Button>
33                 <Button Grid.Row="1" Grid.Column="3" Content="M+"></Button>
34                 <Button Grid.Row="1" Grid.Column="4" Content="M-"></Button>
35                 <Button Grid.Row="2" Grid.Column="0" Content="&lt;--"></Button>
36                 <Button Grid.Row="2" Grid.Column="1" Content="CE"></Button>
37                 <Button Grid.Row="2" Grid.Column="2" Content="C"></Button>
38                 <Button Grid.Row="2" Grid.Column="3" Content="±"></Button>
39                 <Button Grid.Row="2" Grid.Column="4" Content="√"></Button>
40                 <Button Grid.Row="3" Grid.Column="0" Content="7"></Button>
41                 <Button Grid.Row="3" Grid.Column="1" Content="8"></Button>
42                 <Button Grid.Row="3" Grid.Column="2" Content="9"></Button>
43                 <Button Grid.Row="3" Grid.Column="3" Content="/"></Button>
44                 <Button Grid.Row="3" Grid.Column="4" Content="%"></Button>
45                 <Button Grid.Row="4" Grid.Column="0" Content="4"></Button>
46                 <Button Grid.Row="4" Grid.Column="1" Content="5"></Button>
47                 <Button Grid.Row="4" Grid.Column="2" Content="6"></Button>
48                 <Button Grid.Row="4" Grid.Column="3" Content="*"></Button>
49                 <Button Grid.Row="4" Grid.Column="4" Content="1/x"></Button>
50                 <Button Grid.Row="5" Grid.Column="0" Content="1"></Button>
51                 <Button Grid.Row="5" Grid.Column="1" Content="2"></Button>
52                 <Button Grid.Row="5" Grid.Column="2" Content="3"></Button>
53                 <Button Grid.Row="5" Grid.Column="3" Content="-"></Button>
54                 <Button Grid.Row="5" Grid.RowSpan="2" Grid.Column="4" Content="="></Button>
55                 <Button Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2" Content="0"></Button>
56                 <Button Grid.Row="6" Grid.Column="2" Content="."></Button>
57                 <Button Grid.Row="6" Grid.Column="3" Content="+"></Button>
58             </Grid>
59         </DockPanel>
60     </Grid>
61 </Window>

 

4.2 效果圖


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文來告訴大家如何在 Direct2D1 繪製基本圖形,包括線段、矩形、橢圓 ...
  • 本文告訴大家如何使用dot net core 和其他進程進行通信 ...
  • OpenCVOpenCV是一個開源的跨平臺的電腦視覺庫,它的設計目標時執行速度儘量快,主要關註實時應用。可以運行在Linux、Windows、Mac OS、Android、IOS、Maemo、FreeBSD、OpenBSD等操作系統上。OpenCV採用C/C++語言開發和使用外還支持使用C#、Ru... ...
  • 現在.NET Core貌似很火,與其他.NET開發者交流不說上幾句.NET Core都感覺自己落伍了一樣。但是冷靜背後我們要也看到.NET Core目前還有太多不足,別的不多說,與自家的服務框架WCF集成起來就不咋地,從最初不支持,到現在有個笨笨咔咔的Web Service Reference Pr ...
  • 1 /// <summary> 2 /// XML幫助類 3 /// </summary> 4 public class XmlHelper 5 { 6 /// <summary> 7 /// xml轉實體 8 /// </summary> 9 /// <typeparam name="T"></t ...
  • 先簡單瞭解一這個幾個 名詞的意思。 控制反轉(IOC) 依賴註入(DI) 並不是某種技術。 而是一種思想。一種面向對象編程法則 什麼是控制反轉(IOC)? 什麼是依賴註入(DI) 可以點擊下麵鏈接 理解的比較詳細 https://blog.csdn.net/PacosonSWJTU/article/ ...
  • 1. 直接對view頁面的Layout值設置null 2. 對 文件進行設置, MVC呈現視圖的時候,預設情況下會自動查找_ViewStart.cshtml文件, 直接註釋掉, 或者設置為null 即可. 不過此方法有可能會把全站的模版頁都為空, 故不建議使用. ...
  • 使用項目符號和編號,可以讓文檔的層次結構更清晰、更有條理,也更容易突出重點。在編輯文檔的過程中,我個人也比較偏愛項目標號來標註文章重點信息。在之前的文章中,介紹瞭如何在Word中來創建項目標號和編號列表,在本篇文章中,將介紹創建PDF項目符號列表和多級編號列表的方法。 藉助工具: Spire.PDF ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...