title: Bubbling RoutedEvent or RoutedCommand to a ViewModel
body: <p>I've got a collection of ViewModels that are rendered as tabs using a style to pull out the relevant content to display on the tab:</p>
  
  <pre><code>public class TabViewModel : DependencyObject
  {
        public object Content
        {
            get { return (object)GetValue(ContentProperty); }
            set
            {
                SetValue(ContentProperty, value);
            }
        }
  
  }
  </code></pre>
  
  <p>Here's the TabControl:</p>
  
  <pre><code>&lt;TabControl 
       ItemsSource={Binding MyCollectionOfTabViewModels}" 
       ItemContainerStyle="{StaticResource TabItemStyle}" /&gt;
  </code></pre>
  
  <p>And here's the style</p>
  
  <pre><code>&lt;Style TargetType="TabItem" x:Key="TabItemStyle"&gt;
       &lt;Setter Property="Content" Value="{Binding Content}"/&gt;
  &lt;/Style&gt;
  </code></pre>
  
  <p>We are creating an instance of a usercontrol and setting the "Content" property of the TabViewModel to that so that the usercontrol gets displayed in the TabItem's Content area.</p>
  
  <pre><code>MyCollectionOfViewModels.Add(new TabViewModel() 
  { 
       Content = new MyUserControl();
  });
  </code></pre>
  
  <p>My question is, <strong>I would like to allow a MyUserControl (or any of its sub controls) added to the TabViewModel's Content property to be allowed to raise an event that the TabViewModel handles</strong>.</p>
  
  <p>Anyone know how I would do that?</p>
  
  <p>We've experimented using RoutedEvents and RoutedCommands, but haven't been able to get anything to work 100% and have it be compatible with MVVM. I really think that this could be done with a RoutedEvent or RoutedCommand, but I don't seem to be able to get this to work.</p>
  
  <p><em>Note: I've removed some of the relevant Prism-specific code, but if you are wondering why we do something so silly, it is because we are trying to stay control agnostic by using Prism's RegionManager.</em></p>