ViewModel สื่อสารกับ View ของตัวเองอย่างไร

ฉันกำลังพัฒนาแอปพลิเคชัน WPF MVVM Light ฉันต้องการแสดงกล่องข้อความ/กล่องโต้ตอบ หรือมีสถานการณ์อื่นๆ บางอย่างที่ฉันต้องการให้โมเดล View ของฉันสื่อสารกับมุมมองหรือเพิ่มเหตุการณ์บางอย่างในมุมมองที่เกี่ยวข้อง

ฉันจะบรรลุเป้าหมายนั้นได้อย่างไร?


person manav inder    schedule 03.11.2012    source แหล่งที่มา


คำตอบ (3)


ดูคลาส Messenger ของ MVVM Light ควรมีตัวอย่างเป็นค่าเริ่มต้นเมื่อคุณดาวน์โหลดไฟ MVVM มันเหมือนกับ Messenger.Default.Send(new YourMessageClass()) และคุณสามารถลงทะเบียน Listener ได้ที่ View side

person Erti-Chris Eelmaa    schedule 03.11.2012
comment
ขอบคุณสำหรับคำตอบของคุณ ใช่มันใช้งานได้ แต่มันไม่สอดคล้องกัน ฉันมีหน้าจอเลือกที่มีปุ่มเชื่อมโยงกับคำสั่งในรูปแบบมุมมอง เมื่อคลิกที่ปุ่มนั้น คำสั่งจะเริ่มทำงานและใช้เมธอด Messenger.Default.Send และ 'เลือกหน้าจอรับข้อความนั้นและฉันเปิดหน้าจอ CRUD จากข้อความนั้น . ตอนนี้เมื่อหน้าจอ CRUD นั้นพยายามส่งข้อความ มันก็ได้รับจาก 'เลือกหน้าจอ' แทนที่จะเป็น 'หน้าจอ CRUD - person manav inder; 10.11.2012
comment
ตอนนี้มันทำงานได้ดี ฉันแค่ต้องตั้งค่าคุณสมบัติ Token พร้อมกับข้อความ - person manav inder; 17.11.2012

กรอบปริซึมมีแนวคิดของการร้องขอการโต้ตอบเพื่อแก้ไขปัญหานี้ ตัวอย่างที่ดีสามารถพบได้ ที่นี่ หรือ ที่นี่ ก>.

person m0sa♦    schedule 03.11.2012
comment
ขอบคุณ แต่ฉันผูกพันกับ MVVM Light ตามความต้องการของลูกค้า - person manav inder; 04.11.2012
comment
คลาสการดำเนินการทริกเกอร์เป็นส่วนหนึ่งของ. NET Framework สิ่งเดียวที่คุณต้องมีคือการใช้งานที่เทียบเท่ากับคลาสคำขอโต้ตอบ เป็นรูปแบบที่น่าสนใจครับ - person m0sa♦; 04.11.2012

ความรับผิดชอบในการแสดงป๊อปอัปไม่ควรเป็นความรับผิดชอบของ ViewModel แต่เป็น "บริการที่ดูแลมันให้คุณ"

หาก "หน้าต่างป๊อปอัป" เป็นกิริยาช่วยเหมือนหน้าต่างเช่น "กล่องโต้ตอบเปิดไฟล์", "กล่องโต้ตอบบันทึกไฟล์", กล่องข้อความ "ตกลง/ยกเลิก" หรือ "ใช่/ไม่ใช่" ฯลฯ ฉันเชื่อว่า "บริการ" จะเป็น ทางเลือกที่เหมาะสม เหตุผลก็คือบริการสามารถ facked/mocked สำหรับการทดสอบหน่วยได้

นอกจากนี้คุณยังสามารถใช้บริการนี้ที่แตกต่างกันได้ขึ้นอยู่กับสิ่งที่คุณต้องการ: ในการแก้ไขข้อบกพร่อง (r เมื่อบทบาทเป็นประเภทผู้ดูแลระบบหรือนักพัฒนา) คุณจะมีข้อมูล "ละเอียด" มากกว่าในรุ่นหรือผู้ใช้ทั่วไป เป็นต้น

ตอนนี้สำหรับ "ViewModel สื่อสารกับ View อย่างไร" ฉันไม่แน่ใจว่าคุณหมายถึงอะไร เพียงเพิ่มคุณสมบัติบน ViewModel และผูกมุมมองเข้ากับคุณสมบัตินั้น

person Patrice Calvé    schedule 07.11.2012