मुझे बुलबुले समझाते हुए बहुत सी उदाहरण मिली लेकिन टनेलिंग के बारे में कोई भी नहीं, जैसे कि बच्चे को माता-पिता। मुझे लगता है कि मेरी मुख्य समस्या यह है कि मुझे समझ में नहीं आता कि बच्चे में रूटेड घटना को कैसे पंजीकृत किया जाए (विंडोकंट्रोल टू यूजर कंट्रोल)। मुझे मिल गया:रूटेड इवेंट टनल बच्चे तक नहीं पहुंचता
public partial class MyParent : UserControl
{
public static readonly RoutedEvent RoutedMouseUpEvent = EventManager.RegisterRoutedEvent(
"PreviewMouseLeftButtonUp", RoutingStrategy.Tunnel, typeof(RoutedEventHandler), typeof(WindowControl));
// Provide CLR accessors for the event
public event RoutedEventHandler MouseUp
{
add { AddHandler(RoutedMouseUpEvent, value); }
remove { RemoveHandler(RoutedMouseUpEvent, value); }
}
public addView(UserControl view)
{
WindowControl win = new WindowControl();
win.Content = view;
}
private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(MyParent.RoutedMouseUpEvent);
RaiseEvent(newEventArgs);
}
}
addView की कैप्सूलीकरण आवश्यक है, कोई समस्या नहीं होनी चाहिए? बच्चा addView के माध्यम से जोड़ा जाता है। Grid_MouseLeftButtonUp को बुलाया जाता है। XAML
<Grid>
<Border BorderBrush="black" BorderThickness="1" HorizontalAlignment="Center" VerticalAlignment="Center" PreviewMouseLeftButtonUp="UserControl_PreviewMouseLeftButtonUp">
</Border>
</Grid>
में
public partial class ChildView : UserControl
{
void UserControl_PreviewMouseLeftButtonUp(object sender, RoutedEventArgs args)
{
int i = 0; // The breakpoint is never called
}
}
अगर मैं कुछ तो कृपया मुझे पता है भूल गया:
रिसीवर (इसलिए वहाँ ज्यादा नहीं है यह MVVM है) इस तरह दिखता है। समस्या यह है कि रूटेड घटना UserControl_PreviewMouseLeftButtonUp
मुझे समझ नहीं आता: यह भी इस प्रदर्शन एक अच्छा छवि है। मैं प्रोग्राम को क्यों नहीं बता सकता कि MyParent रूट है? – Martin
अब मैं समझता हूं। टनलिंग मेरे बच्चे तक नहीं पहुंच सकती है, जो मेरी राय में काफी बेकार है। मैंने उन डॉक्स को पढ़ा लेकिन किसी भी तरह से इसे इस तरह समझ में नहीं आया। मैं इंटरफेस का उपयोग करके अपनी समस्या का समाधान करूंगा और बस डेटा पास कर रहा हूं (यह योजना बी थी)। उत्कृष्ट व्याख्या के लिए धन्यवाद। – Martin
टनलिंग बेकार नहीं है, इसका उपयोग आप जिस तरीके से कर रहे हैं उससे अलग कार्य के लिए किया जाता है। उदाहरण के लिए, इसका उपयोग टेक्स्ट प्रेस में कुछ अक्षरों को टाइप करके मुख्य प्रेस को कैप्चर करके और टेक्स्टबॉक्स तक पहुंचने से पहले ईवेंट को रद्द करके किया जा सकता है। –