Workshop - Tại Sao Bạn Nên Chọn WPF Thay Cho Windows Forms Tuan Pham 10 years ago Tuan Pham 10 lý do tại sao nói WPF tốt hơn so với Windows FormsCù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à designKhi 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)- WinformKéo control và change thuộc tính- WPFNế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í neoKhi 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 đốiCó 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 đốiNế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óngKhi 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àngMộ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 applicationTạ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 WinformTrê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 WPFDướ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ảnCuố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ế ControlKhi 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 OutlineCác control được tổ chức dạng cây 8) TriggersMộ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 WPFNế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à 3DWindows 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 Tweet Share Share Share Share Bài mớiWPF Library - Tìm Hiểu Về Thư Viện Dragablz - TabControl for WPFWorkshop - Tại Sao Bạn Nên Chọn WPF Thay Cho Windows FormsWPF - Tổng quan về Windows Presentation FoundationWPF – Cơ Bản Về Data Binding Trong WPF Đăng nhập để nhận bài
ConversionConversion EmoticonEmoticon