เป็นเวลากว่าหนึ่งปีแล้วตั้งแต่ฉันเขียนบทความครั้งล่าสุด WPF นั้นใหญ่เกินไปและยังมีอีกหลายเรื่องที่จะเขียน ฉันจะยังคงมุ่งเน้นไปที่การควบคุมแบบกำหนดเองเพื่อขยายประเด็นทางเทคนิคที่เกี่ยวข้อง ในการสนทนา เราจะพูดถึงบทความนี้ สิ่งที่สำคัญที่สุดคือคุณสมบัติการพึ่งพา WPF เพื่อนที่เคยติดต่อด้วยควรจะมีความเข้าใจบ้าง แต่ก่อนที่เราจะพูดถึงคุณสมบัติการพึ่งพา WPF เรามาดูกันว่าคุณสมบัติต่างๆ ใน. net ถูกใช้ก่อนที่ WPF จะปรากฏขึ้น
ปัญหาแอตทริบิวต์ทั่วไป
คุณสมบัติพื้นฐานของ c#
คุณสมบัติการควบคุมแบบกำหนดเองของ ASP.NET
คุณสมบัติการควบคุมแบบกำหนดเองของ WinForm
คุณสมบัติการควบคุมแบบกำหนดเองของ Javascript
คุณสมบัติพื้นฐานของ c#
เนมสเปซ WPFControlTutorialPart2_Basic
-
บุคคลในชั้นเรียนสาธารณะ
-
สตริงส่วนตัว _name;
ชื่อสตริงสาธารณะ
-
รับ { กลับ _name }
ตั้งค่า { _name = ค่า; }
-
//คุณสมบัติอัตโนมัติ
อายุ int สาธารณะ { รับ;
-
-
ข้อมูลข้างต้นควรถือเป็นคุณลักษณะพื้นฐานที่สุดของ C# และทุกคนก็คุ้นเคยกับคุณสมบัติเหล่านี้
หมายเหตุ: คุณสมบัติเริ่มต้นไม่ได้เตรียมใช้งาน ไม่เช่นนั้นอาจเกิดข้อผิดพลาดที่ไม่ทราบสาเหตุหลายประการ
(คุณสามารถเลือกอ่านได้ตามนี้ หากคุณเคยสัมผัสกับเทคโนโลยีต่อไปนี้ จริงๆ แล้วเป็นเรื่องง่ายมาก)
คุณสมบัติการควบคุมแบบกำหนดเองของ ASP.NET
เนมสเปซ WPFControlTutorialPart2_WebApp
-
WebFromControl คลาสสาธารณะ: WebControl
-
สตริงส่วนตัว _controlName;
ControlName สตริงสาธารณะ
-
รับ
-
กลับ _controlName;
-
ชุด
-
_controlName = ค่า;
-
-
ป้องกันแทนที่เป็นโมฆะ RenderContents (เอาต์พุต HtmlTextWriter)
-
output.Write("ชื่อคอนโทรลคือ:"+ControlName);
-
-
-
ข้างต้นคือการควบคุมเว็บเซิร์ฟเวอร์แบบกำหนดเองอย่างง่าย
การควบคุม asp.net มุ่งเน้นไปที่การแสดงผล เมธอด RenderContents จะถูกเรียกทุกครั้งที่รีเฟรชเพจ ดังนั้นไม่ว่าคุณสมบัติจะมีการเปลี่ยนแปลงหรือไม่ก็ตาม นั่นคือ ไม่จำเป็นต้องใช้คุณสมบัติ การเปลี่ยนแปลงเพื่อแจ้งการวาด UI ใหม่
หมายเหตุ: หากจำเป็นที่แอตทริบิวต์ ControlName จะต้องมีค่าเพื่อให้แน่ใจว่าผลลัพธ์อินพุตมีความถูกต้อง ก็สามารถประมวลผลได้ในเมธอด get
รับ
-
ถ้า (_controlName == null) _controlName = string.Empty;
กลับ _controlName;
-
คุณสมบัติการควบคุมแบบกำหนดเองของ WinForm
เมื่อคุณสมบัติเปลี่ยนแปลง จะไม่ถูกวาดใหม่ คุณต้องเรียกเมธอด Invalidate ด้วยตนเองเพื่อป้อนเมธอด OnPaint เพื่อวาดใหม่
หมายเหตุ: หากคุณต้องการวาดอินเทอร์เฟซใหม่ คุณต้องเรียกใช้เมธอดด้วยตนเอง
คุณสมบัติการควบคุมแบบกำหนดเองของ JavaScript
<div id="demoDiv" style="พื้นหลัง-สี: สีแดง">สวัสดี</div>
<สคริปต์>
ฟังก์ชั่น ElementControl (ชื่อองค์ประกอบ) {
this.element = document.getElementById (ชื่อองค์ประกอบ);
-
ElementControl.prototype.setWidth = ฟังก์ชั่น (ความกว้าง) {
this.element.style.width = ความกว้าง;
-
var obj = ใหม่ ElementControl("demoDiv");
obj.setWidth("สวัสดี");
</สคริปต์>
ประเภทตัวแปร JavaScript ไม่มีประเภทที่เข้มงวด ตัวอย่างเช่น เมื่อตั้งค่าความกว้างของ dom ประเภทจะเป็นจำนวนเต็มเท่านั้น หากค่าถูกส่งผ่านเป็นสตริง จะเกิดข้อผิดพลาด (แน่นอนว่าเป็นค่าปลอม)
(ฉันไม่รู้ว่าคนที่ทำ js front-end control รู้สึกแบบนี้หรือเปล่า การกำหนดคุณสมบัติแล้วมอบหมายใหม่และวาด control ใหม่เป็นสิ่งที่เจ็บปวด ต้องปรับด้วยตนเอง และจะส่งผลต่อการออกแบบการควบคุมทั้งหมด )
หมายเหตุ: ตรวจสอบความถูกต้องของการกำหนดแอตทริบิวต์
จากตัวอย่างข้างต้น เราจะเห็นว่าคุณลักษณะเฉพาะไม่สามารถตอบสนองความต้องการของโปรแกรมได้
ข้อกำหนดข้างต้นมีความจำเป็น เกิดขึ้นบ่อยครั้ง และบ่อยมาก
โซลูชั่นที่ได้มาตรฐาน
ข้างต้นแนะนำชุดปัญหาเกี่ยวกับคุณลักษณะ หากมีปัญหา จะมีวิธีแก้ไขแบบง่าย
ต่อไปนี้เป็นบทสรุปส่วนตัว:
เมื่อเทคโนโลยีค่อนข้างซับซ้อน จะมีคนออกมากำหนดชุดมาตรฐานเพื่อทำให้เทคโนโลยีง่ายขึ้นและปรับปรุงประสิทธิภาพการผลิต
ไม่ว่านักออกแบบจะพิจารณาอย่างรอบคอบเพียงใด เมื่อมีการกำหนดมาตรฐานแล้ว ความยืดหยุ่นก็จะสูญเสียไป
มาตรฐานอาจขัดแย้งกับนิสัยส่วนตัวของคุณ คุณต้องเรียนรู้ที่จะยอมรับมาตรฐานและกลับสู่หัวข้อ WPF ดังนั้นวิธีแก้ปัญหาใน WPF ก็คือคุณสมบัติการพึ่งพา (DependencyProperty)
เอาล่ะ บทความนี้เป็นเพียงการแนะนำ หากคุณพบปัญหาเหล่านี้เมื่อใช้แอตทริบิวต์ คุณจะมีความรู้สึกบางอย่าง
หากคุณตระหนักว่าปัญหาข้างต้นมีอยู่จริงกับแอตทริบิวต์ แสดงว่าบทความนี้ได้ดำเนินการเสร็จสิ้นแล้ว
บทความนี้ไม่ได้ตั้งใจจะขยายความ บทความถัดไปจะแนะนำระบบคุณสมบัติการพึ่งพา WPF อีกครั้ง
ทุกคนยินดีที่จะหารือเกี่ยวกับ