c# - Why WPF ListBox.ListItems do not raise MouseRightButtonDown -
मैं कोशिश कर रहा हूँ RoutedEvent उदाहरण WPF 4 Unleashed book से। उदाहरण में
विंडो पर कई नियंत्रण हैं और विंडो के शीर्षक बार में इवेंट स्रोत को प्रदर्शित करने के लिए विंडो पर
MouseRightButtonDown परिभाषित किया गया है। इसलिए जब हम विंडो के किसी भी बच्चे के तत्व पर सही क्लिक करते हैं, तो उसका नाम, प्रकार आदि विंडो के शीर्षक बार में दिखाया जाता है। हालांकि जब मैं लिस्टबॉक्स की सूचीइटम पर राइट क्लिक करता हूं, तो इसका नाम, शीर्षक आदि विंडो के शीर्षक बार में सेट नहीं करता है। क्यों?
कोड निम्नानुसार है:
XAML
& lt; विंडो x: कक्षा = "TempWPFProj रूटिंग एवेन्ट ड्रीम "एक्सएमएलएनएस =" http://schemas.microsoft.com/winfx/2006/xaml/presentation "xmlns: x =" http://schemas.microsoft.com/winfx/2006/xaml "शीर्षक =" WPF 4 के बारे में अनलेश्ड "साइज टू कंटेंटेंट =" चौड़ाई और हाइट "पृष्ठभूमि =" ऑरेंजराड "माउस राइट बटटनडाउन =" विंडोमाउस राइट बटटनडाउन "& gt; & LT; StackPanel & gt; & lt; लेबल फॉन्टवेइट = "बोल्ड" फ़ॉन्टसिसेज = "20" अग्रभूमि = "व्हाइट" & gt; डब्लूपीएफ 4 ओलिज्ड & lt; / लेबल & gt; & lt; लेबल & gt; एक © 2010 SAMS प्रकाशन & lt; / लेबल & gt; & lt; लेबल & gt; अधिष्ठापित अध्याय: & lt; / लेबल & gt; & LT; ListBox & gt; & lt; ListBoxItem & gt; अध्याय 1 & lt; / ListBoxItem & gt; & lt; ListBoxItem & gt; अध्याय 2 & lt; / ListBoxItem & gt; & Lt; / ListBox & gt; & lt; स्टैकपैनेल ओरिएंटेशन = "क्षैतिज" क्षैतिज संरेखण = "केंद्र" & gt; & lt; बटन MinWidth = "75" मार्जिन = "10" & gt; सहायता & lt; / button & gt; & Lt; बटन MinWidth = "75" मार्जिन = "10" & gt; ओके & lt; / button & gt; & Lt; / StackPanel & gt; & lt; StatusBar & gt; आपने इस उत्पाद को सफलतापूर्वक पंजीकृत कर लिया है। & lt; / StatusBar & gt; & Lt; / StackPanel & gt; & Lt; / विंडो & gt; सीएस फ़ाइल के पीछे कोड
सिस्टम का उपयोग कर; System.Collections.Generic का उपयोग कर; System.Linq का उपयोग कर; System.Text का उपयोग कर; सिस्टम का उपयोग। थ्रेडिंग। टास्क; System.Windows का उपयोग कर; System.Windows.Controls का उपयोग कर; System.Windows.Data का उपयोग कर; System.Windows.Documents का उपयोग कर; System.Windows.Input का उपयोग कर; System.Windows.Media; System.Windows.Media। इमेजिंग का उपयोग कर; System.Windows.Shapes का उपयोग कर; नेमस्पेस टेम्पेडब्ल्यूपीएफज [/// & lt; सारांश & gt; /// RoutedEventDemo.xaml के लिए इंटरेक्शन लॉजिक /// & lt; / सारांश & gt; सार्वजनिक आंशिक कक्षा रूटिंग एवेन्ट डमो: विंडो {सार्वजनिक रूटिंग एवेन्ट डीमोको () {इनिशियलाइजमेंट (); } निजी शून्य Windows_MouseRightButtonDown (ऑब्जेक्ट प्रेषक, MouseButtonEventArgs ई) {// इस घटना के बारे में जानकारी प्रदर्शित करें this.Title = "Source =" + e.Source.GetType ()। नाम + ", OriginalSource =" + e.OriginalSource.GetType ( ) .नाम + "@" + ई। टेमस्टैम्प; // इस उदाहरण में, सभी संभावित स्रोत नियंत्रण नियंत्रण स्रोत से प्राप्त होते हैं; e.Source नियंत्रण के रूप में; // स्रोत नियंत्रण पर बॉर्डर को टॉगल करें यदि (स्रोत। बार्डरताछता! = नई मोटाई (5)) {source.BorderThickness = नई मोटाई (5); Source.BorderBrush = ब्रश। ब्लैक; } अन्य स्रोत। बार्डरटहायता = नया मोटाई (0); यह सही पुस्तक में कहता है कि क्यों सूचीबॉक्स सही काम नहीं करता है? क्लिक करें "विंडो कभी भी माउस राइट बटटनडाउन ईवेंट प्राप्त नहीं करती है, जब आप सूचीबॉक्सीइटम पर राइट-क्लिक करते हैं। ऐसा इसलिए है क्योंकि ListBoxItem आंतरिक रूप से आइटम चयन को लागू करने के लिए इस घटना के साथ-साथ माउस लेफ्टबायटनडाउन इवेंट (बुबलिंग को रोकने) को संभालता है"
Comments
Post a Comment