title: Why isn't the CommandParameter being updated?
body: <p>We've got a WPF app we wrote, using VS 2015. The app has a bug icon in several places throughout the app, which is meant to be used by the user to report a bug. It brings up their email client to send emails to our help ticketing system. (This works fine.) I wrote a DLL, which I intend to be used by other WPF apps that need to do the same thing, using just MS Outlook, specifying the help ticket email address recipient, the subject line and lastly some text for the body of the email. The text for the body of the email is meant to change, depending upon where the user is at in the app. Is it this part which isn't working correctly and I'm not sure why it isn't. Here's the method from the DLL:</p>
  
  <pre><code>    /// &lt;summary&gt;
      /// This will construct the basics of an email message. Then it will bring up Outlook for the user
      /// to add anything more they want to add, then send the email.
      /// 
      /// This uses version 15 of Microsoft.Office.Interop.Outlook.
      /// 
      /// This will raise an exception if anything goes wrong.
      /// &lt;/summary&gt;
      /// &lt;param name="To"&gt;List of email address(es)&lt;/param&gt;
      /// &lt;param name="Subject"&gt;The Subject line of the email message&lt;/param&gt;
      /// &lt;param name="Body"&gt;The body of the email message&lt;/param&gt;
      public static void SendMail(string To, string Subject, string Body)
      {
          try
          {
              var OutlookApp = new Application();
              var mail = OutlookApp.CreateItem(OlItemType.olMailItem) as MailItem;
              mail.To = To;
              mail.Subject = Subject;
              mail.Body = Body;
  
              foreach (Recipient recipient in mail.Recipients)
              {
                  recipient.Resolve();
              }
  
              mail.Display(); //bring up Outlook; let the user add whatever they want then send it
          }
          catch (System.Exception ex)
          {
              if (ex.InnerException != null)
              {
                  throw new System.Exception(ex.Message, ex.InnerException);
              }
              else
              {
                  throw new System.Exception(ex.Message);
              }
          }
      }
  </code></pre>
  
  <p>Here's the XAML where I try to involve it:</p>
  
  <pre><code>&lt;MenuItem Background="{x:Null}" Foreground="#FF706C6C" Command="{Binding SendOutlookEmailCommand}"&gt;
  &lt;MenuItem.ToolTip&gt;
      &lt;ToolTip Style="{StaticResource MenuItemToolTip}" /&gt;
  &lt;/MenuItem.ToolTip&gt;
  &lt;MenuItem.CommandParameter&gt;
      &lt;model:Email To="CreateHD.Ticket@mycompany.com" Subject="BUG:ACDC" Body="{Binding BugTabInfo}" /&gt;
  &lt;/MenuItem.CommandParameter&gt;
  &lt;MenuItem.Header&gt;
      &lt;Path Data="{StaticResource BugIconData}"
            Stretch="Uniform"
            Fill="#77000000"
            Width="20"
            RenderTransformOrigin="0.25,0.25"
            Height="20" /&gt;
  &lt;/MenuItem.Header&gt;
  </code></pre>
  
  <p></p>
  
  <p>Here's the Body property from the Email class:</p>
  
  <pre><code>public string Body
  {
      get { return (string)GetValue(BodyProperty); }
      set { SetValue(BodyProperty, value); }
  }
  public static readonly DependencyProperty BodyProperty =
      DependencyProperty.Register("Body", typeof(string), typeof(Email));
  </code></pre>
  
  <p>Lastly here's the BugTabInfo property in the viewmodel:</p>
  
  <pre><code>private string bugTabInfo;
  public override string BugTabInfo
  {
      get
      {
          //Debug.WriteLine($"BugTabInfo: {bugTabInfo}");
          return bugTabInfo;
      }
      set
      {
          bugTabInfo = string.Format("Bug on {1} {0}", value, CurrentTableName);
          RaisePropertyChanged("BugTabInfo");
      }
  }
  </code></pre>
  
  <p>What have I done wrong?</p>