title: Binding the width property with a multibinding gives a width of zero
body: <p>I have a problem binding the "width" property of a border control. When i bind it with a constant, the change is reflected in runtime, but when i bound it with a converter fails, even if the converter return the same value than the constant.</p>
  
  <p>Here is the user control. The problem is with the "Border" object. If i do this, the control works as spected:</p>
  
  <pre><code> &lt;UserControl.Resources&gt;
          &lt;DataTemplate x:Key="DataTemplateHeat"&gt;
              &lt;Border Margin="1,0,0,0" BorderBrush="Black" BorderThickness="1" Width="100"&gt;
              &lt;/Border&gt;
          &lt;/DataTemplate&gt;
      &lt;/UserControl.Resources&gt;
      &lt;DockPanel&gt;
          &lt;ItemsControl x:Name="CnvHeats" ItemsSource="{Binding}" ItemTemplate="{StaticResource  DataTemplateHeat}"&gt;
              &lt;ItemsControl.ItemsPanel&gt;
                  &lt;ItemsPanelTemplate&gt;
                      &lt;StackPanel Orientation="Horizontal" Background="Red" /&gt;
                  &lt;/ItemsPanelTemplate&gt;
              &lt;/ItemsControl.ItemsPanel&gt;
          &lt;/ItemsControl&gt;
      &lt;/DockPanel&gt;
  &lt;/UserControl&gt;
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/uUJ4v.png" alt="Espected result"></p>
  
  <p>but if i do this, the control fails. The converter executes the correct number of times, and the parameters are ok, but it fails even if i hardcode a return value:</p>
  
  <pre><code>&lt;UserControl.Resources&gt;
          &lt;DataTemplate x:Key="DataTemplateHeat"&gt;
              &lt;Border Margin="1,0,0,0" BorderBrush="Black" BorderThickness="1"&gt;
                  &lt;Border.Width&gt;
                      &lt;MultiBinding Converter="{StaticResource proportionalWidthConverter}" &gt;
                          &lt;Binding Mode="OneWay" Path="GraphProportion"  /&gt;
                          &lt;Binding Mode="OneWay" Path="ActualWidth" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type StackPanel}, AncestorLevel=1}"/&gt;
                      &lt;/MultiBinding&gt;
                  &lt;/Border.Width&gt;
              &lt;/Border&gt;
          &lt;/DataTemplate&gt;
      &lt;/UserControl.Resources&gt;
      &lt;DockPanel&gt;
          &lt;ItemsControl x:Name="CnvHeats" ItemsSource="{Binding}" ItemTemplate="{StaticResource  DataTemplateHeat}"&gt;
              &lt;ItemsControl.ItemsPanel&gt;
                  &lt;ItemsPanelTemplate&gt;
                      &lt;StackPanel Orientation="Horizontal" Background="Red" /&gt;
                  &lt;/ItemsPanelTemplate&gt;
              &lt;/ItemsControl.ItemsPanel&gt;
          &lt;/ItemsControl&gt;
      &lt;/DockPanel&gt;
  &lt;/UserControl&gt;
  </code></pre>
  
  <p>and here is the converter:</p>
  
  <pre><code>public class ProportionalWidthConverter : IMultiValueConverter
  {
      public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
      {
          return 100;
      }
  
      public object[] ConvertBack(
          object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
      {
          throw new NotImplementedException();
      }
  }
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/dSSGT.png" alt="Fail control result"></p>
  
  <p>Any help is apreciated. Thank you in advance.</p>