10 lý do tại sao nói WPF tốt hơn so với Windows Forms
Cùng một bản design gồm: 1 Label, 1 TextBox và 2 Button; nhưng để xem bạn phải tốn bao nhiêu dòng code
- Winform
Private Sub InitializeComponent()
{
Me.Label1 = New System.Windows.Forms.Label()
Me.txtFilmName = New System.Windows.Forms.TextBox()
Me.btnOK = New System.Windows.Forms.Button()
Me.btnCancel = New System.Windows.Forms.Button()
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.GroupBox1.SuspendLayout()
Me.SuspendLayout()
//
//Label1
//
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(20, 23)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(81, 13)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Type film name:"
//
//txtFilmName
//
Me.txtFilmName.Location = New System.Drawing.Point(107, 20)
Me.txtFilmName.Name = "txtFilmName"
Me.txtFilmName.Size = New System.Drawing.Size(100, 20)
Me.txtFilmName.TabIndex = 1
//
//btnOK
//
Me.btnOK.Location = New System.Drawing.Point(57, 88)
Me.btnOK.Name = "btnOK"
Me.btnOK.Size = New System.Drawing.Size(75, 23)
Me.btnOK.TabIndex = 2
Me.btnOK.Text = "OK"
Me.btnOK.UseVisualStyleBackColor = True
//
//btnCancel
//
Me.btnCancel.Location = New System.Drawing.Point(144, 88)
Me.btnCancel.Name = "btnCancel"
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
Me.btnCancel.TabIndex = 3
Me.btnCancel.Text = "Cancel"
Me.btnCancel.UseVisualStyleBackColor = True
//
//GroupBox1
//
Me.GroupBox1.Controls.Add(Me.txtFilmName)
Me.GroupBox1.Controls.Add(Me.Label1)
Me.GroupBox1.Location = New System.Drawing.Point(22, 15)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(230, 56)
Me.GroupBox1.TabIndex = 4
Me.GroupBox1.TabStop = False
//
//frmFilm
//
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(276, 135)
Me.Controls.Add(Me.GroupBox1)
Me.Controls.Add(Me.btnCancel)
Me.Controls.Add(Me.btnOK)
Me.Name = "frmFilm"
Me.Text = "Films"
Me.GroupBox1.ResumeLayout(False)
Me.GroupBox1.PerformLayout()
Me.ResumeLayout(False)
}
- WPF
* Các bạn có thể thấy sự tương đồng giữa WPF và các layout của nền tảng khác
- Android
- Windows Phone
- Web
The table element was not designed to be a layout tool. |
1) Về phương diện tiếp cận và design
Khi bạn đã quen với việc thiết kế Web, bạn sẽ học WPF rất dễ, hoàn thành bản design nhanh chóng và chuẩn xác tuyệt đối so với việc dùng chuột ở Winform(code để design thì rất chậm)
- Winform
Kéo control và change thuộc tính
- WPF
Nếu bạn có khả năng gõ 10 ngón thì nó sẽ phát huy tác dụng triệt để
2) Khả năng tương thích về kích thước và vị trí neo
Khi bạn design và sau đó là code, bạn sẽ thấy, khi dùng WPF bạn sẽ ít phải canh chỉnh hơn. Winform dễ bị lệch vị trí hơn WPF
- Winform: là định vị tuyệt đối
Có thể thấy, các Button sẽ luôn ở ngay vị trí đó theo Ox, Oy và sẽ không tự động canh chỉnh khi khung chính thay đổi.
- WPF: là định vị tương đối
Nếu bạn có định hướng tốt khi design, Screen của WPF sẽ cho ta một sự linh hoạt nhất định cho các kích thước màn hình cũng như sự thay đổi về số control chen nhau. Có thể bạn sẽ thấy định vị tuyệt đối là nhanh hơn nhưng bạn nhầm to khi quy mô dự án là không nhỏ; chưa kể hiện nay kích thước màn hình là rất đa dạng.
WPF sẽ cho ta sự tương thích như các website hiện nay - có nhiều cách hiển thị cho nhiều thiết bị
3) WPF cho phép phát triển thành một website nhanh chóng
Khi bạn có một ứng dụng WPF, việc bạn nghĩ nó sẽ được phát triển trên nền web là hoàn toàn khả thi vì WPF dùng chung bộ thư viện với Silverlight
-> Ngoài ra: Một ứng dụng WPF lại cho ta cách thể hiện như một WebBrowser - tức load các Page lên trang chính(hình trên)
4) WPF cho phép Custom style, nhanh chóng, dễ dàng
Một button khác hình chữ nhật là rất khó làm với Winform, nhưng WPF thì button có thể là hình chữ THẬP, các button sẽ có cùng một kiểu nếu được Apply cùng style.
Style trong WPF có phần giống CSS của website. Điều này khó mà đạt được với Winform.
5) WPF là tương lai của .NET application
Tại sao tôi nói vậy, sau đây là 3 vấn đề
- Cộng đồng quốc tế đang chuyển sang WPF thay cho Winform
Trên đây là thống kê từ trang StackOverflow, số lượng câu hỏi về WPF là gần gấp đôi Winform - điều đó nói lên rằng chúng ta đang dần chú ý hơn WPF.
- Microsoft tin vào WPF
Dưới đây là hai ứng dụng khá quen thuộc, là cột móc của WPF và Winform. Tại sao?
Vì VS 2010 được xây dựng hoàn toàn bằng WPF, bạn có tin không!
- Tốc độ, đơn giản
Cuối cùng, WPF thật sự nhanh chóng, đơn giản và hoàn hảo đến thời điểm hiện tại. Một khi bạn vượt qua một số trở ngại trong học tập bạn sẽ thấy nó hay đến mức nào. Bạn sẽ không phải loay hoay với những thứ quá tầm thường.
6) WPF cho phép Binding dữ liệu cực đỉnh.
Khi tương tác nhiều với Data, WPF là rất mạnh cho việc Binding Data. Bạn sẽ thấy đơn giản hơn nhiều khi Show data lên View.
Để binding data cho GridView trong Winform và WPF bạn cần làm gì? Load data:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// create a connection to Top Trumps database
String cs = ConfigurationManager.ConnectionStrings["csMovies"].ConnectionString;
SqlConnection cn = new SqlConnection(cs);
try
{
// create a new dataset
DataSet ds = new DataSet();
// open the connection (not strictly necessary, as the
// data adapter will do this when you use it anyway)
cn.Open();
// fill data tables
SqlDataAdapter daMoviess = new SqlDataAdapter();
daMoviess.SelectCommand =
new SqlCommand("SELECT * FROM tblMovies WHERE PackId=1", cn);
daMoviess.Fill(ds, "Movies");
// now set the data context for the entire window
this.DataContext = ds;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
// close the connection whether went wrong or not
cn.Close();
}
}
Và WPF binding thế nào
7) Đơn giản trong quản lý và thiết kế Control
Khi tôi làm việc với WPF trong thời gian dài và tiếp cận Winform tôi thấy rằng thật sự khó khăn hơn cho việc Design và quản lý các control Document Outline
Các control được tổ chức dạng cây
8) Triggers
Một trong những sự mới mẻ của WPF đó là Triggers - cho phép chúng ta tạo ra các ứng dụng linh hoạt hơn, gần gũi hơn với người dùng. Bạn có để ý thấy một TextBox yêu cầu nhập số nhưng bạn nhập chữ nó sẽ cảnh báo ngay lập tức - với WinForm bạn làm được nhưng tốn nhiều time hơn, thiếu linh động và khó cho sự thay đổi sau này, đặc biệt rất trực quan.
- TextBox có Background màu hồng khi rê chuột vào.
Chỉ cần bao nhiêu đây code
9) Hoạt họa và chuyển động trong WPF
Nếu có yêu cầu làm một vài Slide PowerPoint bằng .NET application, bạn sẽ làm thế nào với các chuyển động trong PowerPoint, Nếu dùng Winform bạn sẽ dùng timer chạy để set vị trí, và cần bao nhiêu timer cho 20 đối tượng... chỉ bao nhiêu đấy thôi bạn sẽ thấy khó khăn.
- Tôi có ví dụ sau: các button dùng để control một hình tròn. Start để hình tròn chạy
- Điều tôi phải làm là
Không cần code C# thấy không. Ngoài ra bạn cũng có thể làm phim hoạt hình với WPF, SlideShow ảnh ...
10) Drawing và 3D
Windows Forms không cho Draw hay 3D. WPF cho phép thế điều đó rất tốt.
- Xoay đối tượng
- Load một file 3D vẽ bằng 3DMAX
Và còn nhiều hơn những thứ hay ho khác ở WPF
Chúc các bạn thành công!
PHẠM TUÂN
Đăng nhập để nhận bài
ConversionConversion EmoticonEmoticon