title: WPF binding with explicit conversion
body: <p>My question may be a repeat of other conversion question but I feel mine is different.</p>
  
  <p>Here goes... [simplified example].</p>
  
  <pre><code>public class DataWrapper&lt;T&gt;
  {
      public T DataValue{ get; set; }
  
      public DataWrapper(T value)
      {
          DataValue = value;
      }
  
      public static explicit operator DataWrapper&lt;T&gt; (T value)
      {
          return new DataWrapper&lt;T&gt;(value);
      }
  
      public static implicit operator T(DataWrapper&lt;T&gt; data)
      {
          return data.DataValue;
      }
  }
  </code></pre>
  
  <p>Now, in my ViewModel:</p>
  
  <pre><code>public class ViewModel
  {
      public DataWrapper&lt;string&gt; FirstName { get;set; }
      public DataWrapper&lt;string&gt; LastName { get; set; }
  }
  </code></pre>
  
  <p>And in XAML:</p>
  
  <pre><code>&lt;TextBlock Text="{Binding FirstName}" /&gt;
  &lt;TextBlock Text="{Binding LastName}" /&gt;
  </code></pre>
  
  <p>My question is, will this work? Will WPF binding call the <code>Implicit</code> and <code>Explicit</code> converter in my <code>DataWrapper&lt;T&gt;</code> class instead of needing to implement a <code>IValueConverter</code> for each <code>TextBlock</code>.</p>