WPF กับ WinForms - มุมมองของโปรแกรมเมอร์ Delphi หรือไม่?


38

ฉันได้อ่านหัวข้อหลัก ๆ ใน WPF กับ WinForms แล้วและฉันพบว่าตัวเองติดอยู่ในความสับสนที่คุณสามารถตกหลุมได้เมื่อตัดสินใจระหว่างเทคโนโลยีที่ผ่านการทดลองและจริงมาแล้ว (Winforms) และเป็นตัวตายตัวแทน (WPF)

ฉันเป็นโปรแกรมเมอร์ Delphi ที่มีประสบการณ์มาหลายปีจนทำให้ C # โปรแกรมเมอร์ Delphi เพื่อนของฉันออกไปที่นั่นจะเข้าใจว่าฉันตื่นเต้นที่จะรู้ว่า Anders Hejlsberg จากชื่อเสียงของ Delphi คือสถาปนิกด้านหลัง C # ฉันมีความแข็งแกร่งในส่วนประกอบที่กำหนดเองของ VCL ของ Delphi โดยเฉพาะอย่างยิ่งผู้ที่เกี่ยวข้องในการสร้างวิซาร์ดและส่วนประกอบหลายขั้นตอนที่ทำหน้าที่เป็นภาชนะสำหรับส่วนประกอบของเด็ก

ด้วยพื้นหลังนั้นฉันหวังว่าพวกคุณที่เปลี่ยนจาก Delphi เป็น C # สามารถช่วยฉันในการตัดสินใจ WinForms vs. WPF สำหรับการเขียนแอปพลิเคชันเริ่มต้นของฉัน หมายเหตุฉันรู้สึกกระวนกระวายใจมากเมื่อการเขียนโค้ดและสิ่งต่าง ๆ เช่นการสนับสนุนการดีบักเกอร์ที่สมบูรณ์แบบอัตโนมัติเต็มรูปแบบและเหมาะสมสามารถสร้างหรือทำลายโปรเจ็กต์สำหรับฉันรวมถึงความสามารถในการค้นหาข้อมูลที่พร้อมใช้งานบนคุณสมบัติ API และการโทร .

หัวข้อและความคิดเห็น SO ในช่วงวันที่ต้นปี 2009 ทำให้ฉันกังวลอย่างมากเกี่ยวกับ WPF เมื่อพูดถึงความผิดหวังที่อาจเกิดขึ้นซึ่งอาจทำให้การเข้ารหัส C # UI ของฉันแย่ลง ในทางตรงกันข้ามการใช้เวลามากเกินไปในการเรียนรู้เทคโนโลยี API นั่นคือแม้ว่ามันจะไม่ถูกทอดทิ้งในไม่ช้าจะถูกแทนที่ (WinForms) ก็เป็นเรื่องที่น่าหนักใจและฉันก็พบว่าการสนับสนุน GPU ใน WPF ยั่วเย้า

ดังนั้นความสับสนของฉัน เนื่องจากฉันไม่ได้เรียนรู้เทคโนโลยีอย่างใดอย่างหนึ่ง แต่ฉันมีโอกาสน้อยมากที่จะเริ่มต้นใหม่และไม่ต้องเผชิญกับความโค้ง "ไม่รู้" ที่ใหญ่หลวงฉันเคยเห็นผู้คนพูดถึงหัวข้อต่าง ๆ เมื่อโปรแกรมเมอร์ WinForms ย้ายไป WPF ในทางกลับกันถ้าใช้ WPF จะทำให้หงุดหงิดเกินไปหรือมีผลกระทบด้านลบที่สำคัญอื่น ๆ สำหรับผู้พัฒนา RAD ที่ใจร้อนเช่นฉันแล้วฉันจะติดกับ WinForms จน WPF อยู่ในระดับเดียวกันกับการสนับสนุนและใช้งานง่าย เพื่อให้ตัวอย่างที่ชัดเจนเกี่ยวกับจิตวิทยาของฉันในฐานะโปรแกรมเมอร์ฉันใช้ VB และต่อมา Delphi เพื่อหลีกเลี่ยงความเจ็บปวดที่แท้จริงของการเข้ารหัสด้วย MFC ซึ่งเป็นไลบรารี Windows UI ที่นักพัฒนาจำนวนมากต้องประสบในขณะที่พัฒนาแอป Windows ยุคแรก ๆ ฉันไม่เคยเสียใจในการหลีกเลี่ยง MFC

มันจะเป็นการสบายใจที่จะรู้ว่า Anders Hejlsberg มีสถาปัตยกรรมของ WPF และ / หรือ WinForms หรือไม่และหากมีความแตกต่างในวิสัยทัศน์ที่สร้างสรรค์และใช้งานง่ายในฐานรหัสทั้งสอง ในที่สุดสำหรับโปรแกรมเมอร์ Delphi อีกครั้งแจ้งให้ฉันทราบว่า "IDE schock" ฉันใช้เมื่อใช้ WPF เมื่อเทียบกับ WinForms โดยเฉพาะอย่างยิ่งเมื่อมันมาถึงการสนับสนุนการดีบักเกอร์ ความคิดเห็นของตลาดงานใด ๆ ที่อัพเดทสำหรับปี 2011 จะได้รับการชื่นชมเช่นกัน


2
WPF ไม่ได้มีชื่อเสียงที่แย่มากสำหรับประสิทธิภาพที่ต่ำ
David Heffernan

9
@ David: มันมีชื่อเสียงอย่างแน่นอน แต่ตามปกติแล้วความจริงก็ไม่เลวเท่าแร็พ GUI ของ Visual Studio 2010 เขียนขึ้นใหม่ใน WPF และในเครื่องส่วนใหญ่ดูเหมือนว่าความเร็วจะลดลงอย่างเห็นได้ชัดเมื่อเทียบกับ VS 2008 @Robert: นั่นเป็นการกล่าวคำแนะนำของฉันจะเป็นประโยชน์กับ WinForms มาก โดยเฉพาะอย่างยิ่งสำหรับการแปลง Delphi แต่ฉันลังเลเล็กน้อยที่จะโพสต์ว่าเป็นคำตอบเพื่อว่ามันจะถูกลดระดับลงในการให้อภัย ทุกคนดูเหมือนจะงอแงเพราะมันเป็นเทคโนโลยี "เก่า" ราวกับว่ามันมีความหมายอะไรบางอย่าง
Cody Grey

@Cody เข้าใจ ฉันได้รับข้อมูลที่ยอดเยี่ยมพร้อมคำตอบและความคิดเห็น แต่ฉันหวังว่าจะได้รับข้อมูลโดยตรงเพิ่มเติมเกี่ยวกับ WPF และเป็นตัวแก้จุดบกพร่องสนับสนุนกับ WinForms และข้อมูลตลาดงานบางส่วน คำตอบสำหรับคำถามของฉันที่โพสต์ในหัวข้อเหล่านั้นยังคงต้องการอยู่
Robert Oschler

1
@CodyGray: คุณต้องล้อเล่น VS2010 ช้ากว่า VS2008 เป็นร้อยเท่าและเช่นกันคือ WPF ความประทับใจของคุณอาจเป็นเพราะความลำเอียงของโปรแกรมเมอร์ปกติ: คุณจะดูเฉพาะเครื่องระดับไฮเอนด์ล่าสุดซึ่งผู้ใช้ทั่วไปส่วนใหญ่ไม่มี
Timwi

คำตอบ:


20

หากคุณมีพื้นหลัง Delphi คุณจะผิดหวังใน WinForms คุณจะพยายามทำสิ่งต่าง ๆ ที่ง่ายใน VCL เพียงเพื่อจะพบว่ามันยากลำบากหรือเป็นไปไม่ได้ WPF จะมีข้อ จำกัด น้อยกว่ามาก

ตัวอย่างเช่นต่อไปนี้เป็นข้อ จำกัด บางประการของ WinForms ที่เราพบ:

  • WinForms ไม่มีอะไรที่เปรียบเทียบกับ TAction ดังนั้นหากคุณคุ้นเคยกับการเขียนโค้ดด้วยการกระทำการแบ่งปันข้อความและไอคอนเดียวกันระหว่างรายการเมนูและปุ่มแถบเครื่องมือและเมนูคลิกขวา, การรวมตรรกะการเปิดใช้งานของคุณและปรับปรุงสถานะการเปิดใช้งาน ในเบื้องหลังด้วย OnUpdate ... คุณจะเกลียด WinForms ซึ่งคุณต้องทำทุกอย่างที่ยากและผิดพลาด
  • WinForms 'เก่า (. NET วินเทจ 1.0) MainMenu ไม่สนับสนุนภาพที่อยู่ถัดจากรายการเมนูและ MenuStrip ใหม่ (แนะนำใน. NET 2.0) เต็มไปด้วยข้อบกพร่องที่ Microsoft ปฏิเสธที่จะแก้ไข (เพราะการแก้ไขข้อผิดพลาดอาจทำลายความเข้ากันได้ย้อนหลัง)
  • การควบคุมหลายอย่างเช่น TreeView นั้นมีการทำงานต่ำมากเมื่อเทียบกับ VCL (ช้าอย่างเจ็บปวดไม่มีเจ้าของวาดตัวเลือกการปรับแต่งที่ขาดหายไป ฯลฯ )
  • ไม่มีอะไรที่เหมือนกับชุมชนที่มีชีวิตชีวาของนักพัฒนาควบคุมบุคคลที่สามที่คุณคุ้นเคยใน Delphi มีห้องสมุดควบคุมคุณภาพอยู่ที่นั่น แต่คุณจ่ายให้พวกเขา - ข้อเสนอฟรีเช่น VirtualTreeView ไม่ได้อยู่ที่นั่นสำหรับ WinForms

WPF เป็นกระดูกที่เปลือยเปล่าเล็กน้อยในบางประเด็นมากกว่า WinForms แต่มันสามารถขยายได้อย่างมหาศาล

  • คุณต้องการอะไรซักอย่าง WPF มี ICommand ซึ่งรวยพอ ๆ กับที่คุณคุ้นเคย (แต่ต้องแน่ใจว่าคุณได้อ่านบทความ MVVM ของ Josh Smith - ปกติคุณต้องเปิด / ปิดการใช้งานคำสั่งของคุณด้วยตนเองเมื่อสถานะเปลี่ยนแปลง แต่เวอร์ชั่นของเขาจะยิงรหัสเปิดใช้งานของคุณโดยอัตโนมัติ ในพื้นหลังเหมือนที่คุณคุ้นเคยกับ OnUpdate)
  • คุณต้องการภาพในเมนู? ที่ถูกสร้างขึ้นใน (และไม่มีที่ไหนใกล้เคียงกับรถใน WinForms)
  • WinForms ดึงเจ้าของออกมาใช้ในการควบคุมที่สำคัญบางอย่าง แต่ถ้าคุณใช้ WPF แทนคุณไม่จำเป็นต้องวาดเจ้าของ - หากคุณต้องการให้โหนด TreeView ของคุณมีข้อความสีดำตามด้วยตัวเลขสีน้ำเงินในวงเล็บคุณเพียงแค่ ใส่ไว้ใน DataTemplate ของคุณและใช้งานได้โดยไม่จำเป็นต้องใช้รหัสวาดเจ้าของที่น่าเกลียด
  • คุณต้องการการควบคุมจากบุคคลที่สามหรือไม่ ในหลายกรณีคุณไม่จำเป็นต้องใช้เพราะคุณสามารถขยายสิ่งที่มีในรูปแบบ WinForms และใช่นักพัฒนา VCL สามารถฝันถึง

WPF มีช่วงการเรียนรู้ที่สูงชันมาก แต่ถ้าคุณหยิบหนังสือดีๆ (เช่น " WPF 4 Unleashed ") มันจะช่วยให้คุณได้รับสิ่งที่แย่ที่สุด - และคุณยินดีที่จะทำงานกับกรอบที่ จะไม่รั้งคุณไว้ในแบบที่ WinForms จะทำได้


1
ขอบคุณสำหรับคำอธิบาย Delphi โดยตรง ความคิดเห็นเกี่ยวกับตลาดงานและข้อมูลใด ๆ ที่เกี่ยวข้องกับการดีบักเกอร์ VS 2010 สำหรับ WPF โดยเฉพาะปัญหาการสืบค้นกลับ / การตรวจสอบ? ฉันจะตรวจสอบหนังสือที่คุณเชื่อมโยงกับ
Robert Oschler

1
ไม่ทราบเกี่ยวกับตลาดงาน สำหรับดีบักเกอร์คาดหวังว่าจะมีความยุ่งยากหากตัวสร้างหน้าต่างของคุณมีข้อยกเว้นเนื่องจากดีบักเกอร์จะลังเลที่จะให้คุณติดตามสแต็ก - แต่สิ่งที่คุณต้องทำคือขุดลงใน InnerException สองระดับในกล่องโต้ตอบข้อยกเว้นรายละเอียดของดีบักเกอร์ และหากการเชื่อมโยงของคุณไม่ทำงานให้เรียกใช้ภายใต้ดีบักเกอร์และดูในหน้าต่างผลลัพธ์เพื่อดูข้อผิดพลาดการรวม นอกเหนือจากนั้นฉันไม่แน่ใจว่าคุณกังวลอะไร WPF debugs ตกลงในประสบการณ์ของฉันและ MVVM ให้คุณทดสอบหน่วยของตรรกะ UI ของคุณมากกว่าที่คุณสามารถทำได้ใน WinForms
Joe White

6
โค้งการเรียนรู้ที่สูงชันมาก คุณไม่ได้โปรแกรมมากใน WPF; คุณถามคำถามเกี่ยวกับวิธีการโน้มน้าวให้ WPF ทำสิ่งที่คุณต้องการ
เอียนบอยด์

ที่จริงแล้วอุปสรรคที่ใหญ่ที่สุดบางอย่างเกี่ยวกับการเรียนรู้ที่จะทำงานกับกรอบที่แยกความรับผิดชอบออกจากกันอย่างเหมาะสมแทนที่จะมีเพียงทุกอย่างที่มาจาก TKitchenSink
Joe White

1
ฉันสามารถมีแบบฟอร์ม Delphi แต่เก็บภาษา C # ได้หรือไม่ โปรด?
Robert Harvey

13

ฉันมักจะแปลกใจมากกับผู้คนที่บอกว่าพวกเขาไม่มีประสบการณ์ที่ดีกับ WPF ฉันเป็นนักพัฒนาที่เปลี่ยนจาก C ++ / MFC เป็น C # / WinForms เป็น C # / WPF การเปลี่ยนจาก WinForms เป็น WPF ไม่ใช่เรื่องง่ายเพราะการเรียนรู้ XAML ไม่ใช่เรื่องง่าย แต่เมื่อคุณได้รับมันแล้วมันเป็นเทคโนโลยีที่ยอดเยี่ยม ฉันคนหนึ่งไม่สามารถกลับไปใช้ WinForms ได้ WPF ยอดเยี่ยมมาก

อีกอย่างที่ทำให้ฉันรำคาญใจคือคนทั่วไปเชื่อมโยง WPF กับ UI เท่านั้น ย่อมดีกว่า WinForms 100 เท่าในความคิดของฉันในความสะดวกในการออกแบบ UI แต่มีเหตุผลอื่น ๆ อีกมากมายที่คุณจะชอบใช้ WPF:

  1. UI แน่นอน
  2. ผูก แค่เวทมนต์ธรรมดา ฟีเจอร์ที่ทรงพลังที่สุดหลังจาก UI แอปพลิเคชัน LOB ได้ประโยชน์จากสิ่งนี้มากที่สุด
  3. คำสั่ง
  4. แยกความกังวล นักออกแบบทำงานเกี่ยวกับการออกแบบโปรแกรมโปรแกรมเมอร์
  5. คุณสมบัติที่แนบมา คุณสามารถขยายการทำงานของการควบคุมของบุคคลที่สามโดยไม่ต้องซอร์สโค้ด (แม้ว่าจุดนี้จะเป็นส่วนหนึ่งของจุดแรก)
  6. เปลี่ยนเป็น Silverlight ได้ง่าย (ทั้งเว็บและ WP7)

คุณอาจไม่เห็นด้วยกับฉันเกี่ยวกับจุดสุดท้ายเป็นเหตุผลให้คุณเรียนรู้ WPF แต่ถ้าคุณถามฉันมันเป็นหนึ่งในสิ่งที่ใหญ่ที่สุด คุณเรียนรู้ WPF คุณสามารถเปลี่ยนเป็น Silverlight ได้อย่างง่ายดาย Silverlight กำลังเติบโตอย่างมากและเป็นเทคโนโลยีที่ยอดเยี่ยมเช่นกัน

และเหตุผลที่ยิ่งใหญ่ที่สุดก็คืออนาคต อาจถูกรวมเข้ากับ Silverlight แต่ทักษะจะยังคงเหมือนเดิม

ดังนั้นฉันจะขอแนะนำให้คุณใช้วิธีการ WPF


1
ฉันไม่ได้บอกว่าฉันไม่เห็นด้วย แต่เหตุผลทั้งหมดนั้นเกี่ยวข้องกับ UI (แม้ว่าคุณจะบอกว่าอีกสิ่งหนึ่งที่ทำให้ฉันรำคาญใจคือคนทั่วไปเชื่อมโยง WPF กับ UI เท่านั้น )
Ed S.

1
+1 เพราะฉันเห็นด้วยกับคะแนนทั้งหมดของคุณ ฉันต้องเลือกถ้าฉันต้องการเรียนรู้ WPF หรือ Winforms และฉันเลือก WPF และไม่เคยเสียใจเลย @Ed: ฉันไม่เห็นว่ามีความเกี่ยวข้องกับ UI อย่างเคร่งครัดยกเว้นคนแรก
Rachel

1
@Rachel: จริงเหรอ? การเชื่อมใช้เพื่ออัปเดต UI เมื่อมีการเปลี่ยนแปลงค่าคุณสมบัติ การแยกข้อกังวลใน # 4 ชัดเจนใช้เฉพาะเมื่อพัฒนา UI # 5 เป็นข้อมูลเกี่ยวกับการควบคุมของบุคคลที่สาม ไม่มี UI ไม่มีส่วนควบคุม # 6 เป็นอีกครั้งเกี่ยวกับการแปลเป็น UI ของ Silverlight ฉันพลาดอะไรไปรึเปล่า?
Ed S.

3
ฉันได้ไปในทางตรงกันข้ามมากขึ้นหรือน้อยลง: WPF -> WinForms -> C ++ / MFC ใช่ฉันเป็นกบฏ; ฉันว่ายทวนน้ำ ฉันไม่เห็นอะไรที่น่าสนใจเกี่ยวกับสิ่งที่ WPF นำมาสู่ UI พวงของซอฟต์แวร์ที่ไม่น่าเชื่อและไม่ใช่เจ้าของภาษาไม่ใช่ความคิดของฉัน "ก้าวหน้า" นอกเหนือจากนั้นฉันไม่แน่ใจว่ารูปแบบการออกแบบที่เชื่อมโยงกับคำตอบนี้จำนวนมาก (รวมถึงคำตอบนี้) กับ WPF เป็นวิธีใดแต่เพียงผู้เดียวสำหรับ WPF คุณสามารถใช้รูปแบบการออกแบบในภาษาใด ๆ หรือกรอบงาน GUI ความแตกต่างเพียงแค่ว่าถ้าคุณไม่ถูกบังคับให้คนจะไม่? ความง่ายในการเปลี่ยนไปใช้ Silverlight เป็นเพียงเหตุผลที่น่าสนใจเท่านั้น
โคดี้เกรย์

5
งานแรกของฉันด้วยแอปพลิเคชัน WPF: วางแถบเครื่องมือทำให้มันสูง 14 dlus ไม่สามารถทำได้ ภารกิจที่สอง: ตั้งค่าแบบอักษรของฟอร์มให้ตรงกับขนาดและแบบอักษรของผู้ใช้ ไม่สามารถทำได้ ขั้นตอนที่สาม: เพิ่มรายการลงใน listview โดยไม่มีการเชื่อมโยงไม่สามารถทำได้ในขณะที่ ออก
เอียนบอยด์

5

ชัดเจน WPF เป็นวิธีที่จะไปคิดในอนาคต การเรียนรู้มันเป็นเรื่องยาก แต่แพลตฟอร์มนั้นออกแบบมาอย่างดีและมีความยืดหยุ่น

คำแนะนำสองสามบรรทัด:

  • เริ่มง่าย: อย่าพยายามใช้โปรเจคแรกของคุณโดยใช้ MVVM เท่านั้นหรือแอนิเมชั่นแฟนซี เริ่มต้นง่ายๆด้วยหน้าต่างปุ่มและรายการ
  • ใช้ประโยชน์จาก DataBinding
  • ซื้อหนังสือWPF Unleashedโดย Adam Nathan

+1 คำตอบการปฏิบัติ พยายามอย่าใช้โปรเจ็กต์แรกของคุณโดยใช้ MVVM เท่านั้นหรืออนิเมชั่นแฟนซี
Karthik Sreenivasan

4

ฉันควรทราบก่อนว่าฉันเป็นนักพัฒนา asp.net เป็นส่วนใหญ่แม้ว่าฉันเคยใช้ winform มาแล้วมากมาย การเปลี่ยนไปใช้ WPF นั้นไม่ใหญ่เท่ากับที่คุณทำ (IMO) หลังจากผ่านไปหนึ่งสัปดาห์หรือมากกว่านั้น (40+ ชั่วโมง) ส่วนใหญ่เป็นลักษณะที่สองอีกครั้ง

อย่างไรก็ตามฉันเชื่อว่า Anders Hejlsberg เป็นหนึ่งในสถาปนิกที่อยู่เบื้องหลัง WPF อย่างน้อยก็ตามผู้จัดพิมพ์ของหนังสือเล่มนี้ ->

ในฐานะหนึ่งในสถาปนิกที่อยู่เบื้องหลัง WPF คริสแอนเดอร์สันอธิบายอย่างชำนาญไม่เพียง แต่ 'วิธีการ' แต่ยังรวมถึง 'ทำไม' หนังสือเล่มนี้เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับทุกคนที่ต้องการเข้าใจหลักการออกแบบและแนวปฏิบัติที่ดีที่สุดของ WPF ” –Anders Hejlsberg เพื่อนทางเทคนิคของ Microsoft Corporation

http://www.amazon.com/Essential-Windows-Presentation-Foundation-WPF/dp/0321374479


11
"ในฐานะหนึ่งในสถาปนิกที่อยู่เบื้องหลัง WPF คริสแอนเดอร์สันอธิบายอย่างชำนาญ ... " แนะนำว่าคริสแอนเดอร์สันเป็นหนึ่งในสถาปนิกที่อยู่เบื้องหลัง WPF Anders Hejlsberg เป็นเพียง "นักวิชาการ" ที่ Microsoft Corporation ตามข้อความที่ยกมาซึ่งไม่ได้พิสูจน์ว่าเขามีส่วนร่วมใน WPF
Andreas Rejbrand

อานั่นอาจเป็นจริง แต่มันแสดงให้เห็นว่าเขาเคารพมัน!

2
หรืออย่างน้อยที่สุดเขาก็เคารพคริส
Bruce McGee

1
หรืออย่างน้อยก็ฝ่ายประชาสัมพันธ์มีคนที่มีชื่อเสียงมาให้ความเห็น
quick_now

@Andreas; ตลกดี: เฉพาะ "นักวิชาการ" ไม่ต้องการลดน้อยลง Chris Anderson - เขาเป็นคนที่ยอดเยี่ยมที่มีโปรไฟล์ต่ำ ( msdn.microsoft.com/en-us/ff395959อยู่ที่นั่น แต่simplegeek.comยังไม่ได้รับการอัปเดตเป็นเวลานาน) Anders Hejlsberg มีส่วนร่วมในหลายสิ่ง. NET (เฟลโลว์ทางเทคนิคมีการเข้าถึงอย่างกว้างขวาง) หลังจากทั้งหมดเขาเป็นคนที่แต่งตัวประหลาดกรอบ (VCL, WCF, ฯลฯ - ดูsimple-talk.com/content/article.aspx?article=673และMicrosoft .com / presspass / exec / techfellow / Hejlsberg / default.mspx ) และมีเพื่อนทางเทคนิคเพียงไม่กี่คนเท่านั้น ...
Jeroen Wiert Pluimers

2

Winforms เกือบจะเหมือนกันกับการพัฒนา Delphi และแน่นอนมีเหตุผลสำหรับสิ่งนั้น เช่นเดียวกับโมเดลวัตถุ Delphi / Object Pascal ที่มีอิทธิพลอย่างมากต่อ C # ดังนั้นรูปแบบของระบบจึงมีอิทธิพลต่อ Winforms

WPF ดูเหมือนจะเป็นทิศทางของสิ่งต่าง ๆ มีการกล่าวกันว่า VS2010 UI (งดงาม!) นั้นใช้ WPF ซึ่งแตกต่างจากรุ่นก่อน ๆ ที่สร้างขึ้นบน Winforms

หากคุณต้องการที่จะอยู่ในเขตความสะดวกสบายของคุณไปกับ winforms หากคุณต้องการติดตามเรื่องราวล่าสุดและยิ่งใหญ่ที่สุดดื่มด่ำกับ WPF


3
WinForms เป็นสิ่งที่ Delphi ขยายตัวมันเป็นเรื่องที่น่าผิดหวังมากเมื่อเทียบกับ Delphi มันเหมือน VB-3 มากกว่า Delphi และ IME ระดับ frutsration จะคล้ายกัน

2

ฉันไม่ใช่โปรแกรมเมอร์ Delphi แต่ใช่ฉันได้ทำงานทั้ง WinForm (หนัก) และ WPF (น้อยกว่าปานกลาง) ฉันเห็นด้วยกับคุณในระดับความคับข้องใจสำหรับคนที่จะเปลี่ยนจาก WinForm เป็น WPF เนื่องจากฉันมีตัวเองอยู่ในสถานการณ์นั้น แต่จนกว่าฉันจะชินกับมัน เรียนรู้และดูว่ายอดเยี่ยมและยืดหยุ่นกับ WPF นั้นเปรียบเทียบกับ WinForm ได้อย่างไร มันมีช่วงการเรียนรู้ที่หนักหน่วงอย่างน้อยสำหรับคนที่มาจากพื้นหลังของ Delphi ไม่ใช่ Winform สำหรับคุณมันคุ้มค่าที่จะไปสู่ ​​WPF มากกว่า WinForm และคุ้มค่ากับเวลา

คุณอาจต้องการดูลิงค์ด้านล่างเพื่อเริ่มต้นด้วย:


1

ฉันทำงาน Windows Forms บางส่วนแล้ว (โดยส่วนใหญ่อยู่ในพ็อกเก็ตพีซี) รวมถึงสภาพแวดล้อมที่ไม่ใช่. NET อื่น ๆ ที่ใช้หลักการเดียวกัน เมื่อฉันย้ายไป WPF ประมาณสามปีที่ผ่านมาในช่วงสองสามเดือนแรกฉันสาบาน ในที่สุดมันก็แค่ "คลิก" และฉันก็ไม่ได้มองย้อนกลับไป - ในความเป็นจริงฉันจะถูกกระแทกถ้าโครงการต่อไปของฉันต้องการให้ฉันกลับไปที่ Windows Forms

ครั้งล่าสุดที่มีการอัปเดต Windows Forms คือในปี 2005 (VS 2005) แต่ยังคงมีอยู่ แต่ไม่มีการปรับปรุงโดย Microsoft อีกต่อไป WPF เป็นเด็กใหม่ในบล็อกสำหรับแอปเดสก์ท็อปดังนั้นหากคุณกำลังจะย้ายไปที่แพลตฟอร์ม. NET โดยใช้เครื่องมือ MS ดังนั้นฉันจะบอกว่ามันเป็นทางออกที่ปลอดภัย บางคนผลัก Silverlight เป็นโซลูชันเดสก์ท็อป แต่เมื่อฉันมองว่าเป็นไปได้ฉันพบว่ามีข้อ จำกัด มากเกินไป (ซึ่งอาจสมเหตุสมผลในบริบทของเว็บ แต่ไม่มากบนเดสก์ท็อป)

บรรทัดล่าง: มีเส้นโค้งการเรียนรู้ที่สูงชันและฉันยังคงเรียนรู้มัน แต่มันก็คุ้มค่า มันสนุกมาก


1

หากคุณกำลังจะเขียนแอปพลิเคชันใหม่ตั้งแต่เริ่มต้นการใช้ WinForms จะเป็นความผิดพลาด โดยพื้นฐานแล้วมันจะตายจากมุมมองการลงทุน Microsoft จะเก็บไว้เป็นระยะเวลานาน แต่คุณจะไม่ได้รับคุณสมบัติใหม่หรือการสนับสนุนใหม่ ฯลฯ WPF เป็นทิศทางที่ชัดเจนสำหรับแอปพลิเคชันเดสก์ท็อปสำหรับอนาคตบนแพลตฟอร์ม MS

จากมุมมองของอาชีพคุณจะดีกว่าการรู้จัก WPF กับ WinForms ด้วยเหตุผลเดียวกันข้างต้น นอกจากนี้คุณยังจะได้เรียนรู้เกี่ยวกับ Silverlight อีกด้วย มีการทับซ้อนกันระหว่างสองแพลตฟอร์ม

และในที่สุด WPF ก็สนุกขึ้นกว่าเดิม และมีพลังมากขึ้น

เส้นโค้งการเรียนรู้นั้นชันกว่าฉันให้คุณ แต่มันจะคุ้มค่ามากกว่าในที่สุด


0

หนึ่งในการพิจารณาเพิ่มเติมที่ควรจะกล่าวถึงก็คือว่ามีแผนสำหรับการสนับสนุน WPF ในขาวดำไม่มี ฉันรู้ว่าคุณไม่ได้ระบุความสนใจในการสนับสนุนข้ามแพลตฟอร์ม (โมโน) แต่อาจมีโอกาสสำหรับสิ่งนี้ในอนาคตของคุณ (ถ้าคุณไปกับ Winforms) สันนิษฐานว่าการสนับสนุน WPF ในโมโน (หรือคล้ายกัน) จะมาพร้อมกัน

แก้ไข: เป็นลิงค์ที่ผมให้ชี้ออกและแสดงความคิดเห็น Gulshan ของไฮไลต์แสงจันทร์เป็นความพยายามเปิดแหล่งที่มานำโดยทีมงานขาวดำเพื่อให้ข้ามแพลตฟอร์มสนับสนุน Silverlight


แต่ Moonlight กำลังอยู่ในระหว่างการพัฒนา
Gulshan

-1

ฉันตื่นเต้นเมื่อฉันได้ยินเกี่ยวกับ WPF ความคิดฟังดูยอดเยี่ยมและทุกสิ่งที่ฉันเห็นในนั้นช่างสวยงาม อย่างไรก็ตามเมื่อฉันมาใช้ใน Visual Studio 2008 (เป็นที่ยอมรับเบต้า) ฉันพบว่ามันน่าหงุดหงิดและแปลกตาที่จะทำงานกับในผู้ออกแบบ / IDE

ฉันโพสต์ข้อมูลเล็กน้อยในบล็อกของฉันในเวลา:
http://blog.dantup.com/2007/08/visual-studio-2008-beta-2-first.html
http://blog.dantup.com/2007 /08/wpf-designer-cider-part-2.html

ฉันไม่ได้ลองในปี 2010 แม้ว่าฉันจะได้พูดคุยกับคนที่มีและมันก็ดูเหมือนว่ามันยังมีความซับซ้อน / น่ารำคาญเล็กน้อยในการจับ

ฉันคิดว่าแอปพลิเคชันของคุณจะดู / รู้สึกดีขึ้นอย่างไม่ต้องสงสัยใน WPF แต่ฉันคิดว่ามันจะทำให้คุณต้องใช้เวลานานกว่าในการสร้างและคุณจะตบหัวของคุณไปพร้อมกัน


"ฉันคิดว่าแอปพลิเคชันของคุณจะดู / รู้สึกดีขึ้นใน WPF อย่างไม่ต้องสงสัย" ไม่จำเป็น - WPF จะไม่ช่วยคุณไม่ให้เขียน UI ที่น่ารังเกียจ ฉันมีตัวอย่างบางส่วนที่นี่ (หนึ่งในนั้นเป็นของฉันแม้ว่าอันนั้นเป็นเพียงแอพพลิเคชั่นสกปรก 'n' ที่รวดเร็วในการทดสอบบางสิ่ง) หากคุณ (และคนที่เรียกการถ่ายภาพหรือที่รู้จักกัน $$) ยินดีที่จะใช้ เวลาและความพยายามคุณสามารถทำสิ่งที่น่าอัศจรรย์ใน WPF
MetalMikester

จุดยุติธรรม สิ่งที่ฉันหมายถึงก็คือ WPF ช่วยให้คุณสร้างแอพที่สวยงามยิ่งขึ้นเนื่องจากคุณถูก จำกัด ด้วยวิดเจ็ตของ Windows แน่นอนว่านี่อาจเป็นทั้งสิ่งที่ดีและไม่ดี!
Danny Tuppeny

3
เป็นสิ่งที่ไม่ดีอย่างแน่นอน WPF ได้นำในยุคของอินเตอร์เฟซที่ไม่ใช่เจ้าของภาษาอย่างสมบูรณ์ ยากที่จะเข้าใจและยิ่งยากที่จะมอง สิ่งที่คนคนหนึ่งคิดว่าสวยงามคือฝันร้ายที่เลวร้ายที่สุดของบุคคลอื่น การปล่อย "สกินนิ่ง" ไว้ในการควบคุมระบบปฏิบัติการในตัวเป็นวิธีที่ยอดเยี่ยมที่ทำให้ทุกคนมีความสุข จากนั้นอีกครั้งฉันปฏิเสธที่จะใช้ Office เวอร์ชันล่าสุดเพราะฉันไม่สามารถยืนส่วนต่อประสานได้ ดังนั้นคุณรู้หรือไม่ออกจากสนามหญ้าและของฉัน
Cody Grey

1
ฉันจะบอกว่านี่เป็นเรื่องส่วนตัว ฉันอาจไม่ต้องการให้ Word Pocessor ของฉันทำผิดกฎเหล่านี้ แต่ซอฟต์แวร์บางอย่างสามารถหลุดพ้นไปได้ เช่น. หนึ่งที่ดีที่สุดตัวอย่าง WPF ผมจำได้ว่าเห็นเป็น Yahoo หนึ่ง - กับผมว่าการปรับปรุงใหญ่ในแอป Windows-เครื่องมือตาม: blogs.msdn.com/cfs-filesystemfile.ashx/__key/...
แดนนี่ Tuppeny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.