จะปิดการใช้งานปุ่มเมาส์ใน C # WPF ได้อย่างไร

ในระหว่างการโหลดไฟล์ขนาดใหญ่ ฉันต้องการปิดการใช้งานปุ่มเมาส์เพื่อไม่ให้ผู้ใช้คลิกองค์ประกอบ UI และทริกเกอร์เหตุการณ์

แก้ไข เมื่อฉันโหลดไฟล์ขนาดใหญ่ในแอปพลิเคชัน WPF Caliburn Micro ของฉัน ฉันเปลี่ยนคุณสมบัติ IsEnabled ของ Listbox เป็น false เนื่องจากฉันต้องการปิดการใช้งานปุ่มในระหว่างกระบวนการนี้ ต่อไปเมื่อโหลดไฟล์ ฉันเปลี่ยนคุณสมบัติ IsEnabled ของ Listbox เป็นจริง หลังจากนั้นการคลิกปุ่มปิดการใช้งานทุกครั้งทำให้เกิดเหตุการณ์ขึ้นและฉันไม่ต้องการให้เป็นอย่างนั้น ฉันไม่รู้ว่าจะลบกิจกรรมนี้อย่างไร และจัดเก็บไว้ที่ไหน ดังนั้นฉันคิดว่าวิธีที่ง่ายกว่าในการแก้ปัญหานี้คือการปิดการใช้งานปุ่มเมาส์ระหว่างกระบวนการโหลดไฟล์ แต่มันก็ไม่ใช่เรื่องง่ายเช่นกัน... ขอบคุณล่วงหน้า!


person El Matheo    schedule 27.01.2021    source แหล่งที่มา
comment
หากเป็นเพียงหน้าต่างเดียว คุณสามารถปิดการใช้งานหน้าต่างนั้นได้จากโค้ด ไม่แน่ใจว่าทำไมคุณถึงต้องการทำเช่นนี้ ในระหว่างการโหลดไฟล์ขนาดใหญ่ คุณสามารถเรียกใช้มันเป็นงานเบื้องหน้าเพื่อหยุดซอฟต์แวร์ได้   -  person Jay Mason    schedule 27.01.2021
comment
คุณอาจต้องการเพิ่มรายละเอียดให้กับคำถามของคุณ ดูเพิ่มเติมที่: stackoverflow.com/help/how-to-ask   -  person Nat Riddle    schedule 27.01.2021
comment
ขอบคุณครับ ผมจะทำให้ดีที่สุดในกระทู้หน้าครับ นี่เป็นครั้งแรกของฉัน   -  person El Matheo    schedule 28.01.2021
comment
@Jay Mason ขอบคุณ ฉันได้ลองวิธีแก้ปัญหาของคุณแล้ว ก่อนที่จะเริ่มโหลดไฟล์ฉันได้ปิดการใช้งานหน้าต่าง เมื่อโหลดไฟล์แล้ว ฉันต้องเปิดใช้งาน window อีกครั้ง และหลังจากนั้นทุกเหตุการณ์ที่เกิดขึ้นระหว่างการโหลดไฟล์ ก็ถูกไล่ออก และทำให้เกิดความยุ่งเหยิงอย่างมากใน UI หากคุณมีวิธีแก้ไขปัญหาอื่น ๆ ก็ยินดีต้อนรับ   -  person El Matheo    schedule 28.01.2021
comment
ฉันพบวิธีแก้ปัญหาที่โพสต์นี้ stackoverflow.com /คำถาม/9527404/   -  person El Matheo    schedule 28.01.2021


คำตอบ (2)


หากคุณต้องการปิดใช้งานปุ่มเมาส์เท่านั้น ผู้ใช้ยังคงสามารถใช้แป้นพิมพ์ได้ ดังนั้นคุณต้องมีเทคนิคที่แตกต่างออกไป คุณสามารถเพิ่ม Gird ที่ซ่อนอยู่ด้วย Opacity="0.5" ลงในหน้าต่างของคุณได้ เมื่อคุณต้องการป้องกันไม่ให้ผู้ใช้ใช้หน้าต่าง เพียงแค่เรียกตารางที่มองเห็นได้

person Ribaz    schedule 27.01.2021
comment
เป็นความคิดที่ดีแม้ว่าลูกค้าของฉันจะไม่ยอมรับก็ตาม - person El Matheo; 28.01.2021

แล้วการแทนที่เหตุการณ์ SelectionChanged บนกล่องรายการและตั้งค่าเป็น Handled = true เมื่อโหลดข้อมูลขนาดใหญ่ล่ะ

person zoolog    schedule 27.01.2021
comment
ฉันได้ลองใช้วิธีแก้ปัญหาของคุณแล้ว แต่ทำไม่ได้ คุณช่วยส่งตัวอย่าง วิธีแทนที่เหตุการณ์ใน ViewModel และวิธีใช้ใน View ได้ไหม ขอบคุณล่วงหน้า. - person El Matheo; 28.01.2021