... and I found this new Concept "Bubble" and "Tunnel" events
Well, it's not exactly new. Maybe if you had only done desktop applications before. But the concept of bubbling events already existed before WPF in HTML applications. Events in your HTML pages also bubble like in WPF.
I thought the solution could be a "friend" member like C++ but C# doesn't have this functionality.
Well, there is something similar. In C# you can use the internal
accessibility (instead of private or public) to declare a method or an event that is only visible to other types that are compiled into the same assembly. In this way you can control the "any other object could trigger the event with no reason", because
"any other object" would mean "only the objects that I compiled into my assembly" -- external objects will not be able to do so.