title: WPF: I don't understand class TextCompositionEventArgs
body: <p>I don't understand the class TextCompositionEventArgs.</p>
  
  <p>There are members of type string named ControlText,SystemText,Text. Then there is a field TextConmposistion which itself contains the members ControlText, SystemText and Text again and additionally the fields SystemCompositionText and CompositionText. </p>
  
  <pre><code>public class TextCompositionEventArgs : InputEventArgs
  {
    ..
    public string ControlText { get; }
    public string SystemText { get; }
    public string Text { get; }
    public TextComposition TextComposition { get; }
  }
  
  public class TextComposition : DispatcherObject
  {
    ..
    public string CompositionText { get; protected set; }
    public string ControlText { get; protected set; }
    public string SystemCompositionText { get; protected set; }
    public string SystemText { get; protected set; }
    public string Text { get; protected set; }
  }
  </code></pre>
  
  <p>Both Text members seem to contain the text typed with the keyboard, all other fields contain empty strings.</p>
  
  <p>In which way do these fields differ and what are they good for?</p>