title: Setter for Canvas.Left and Canvas.Top readwrite in WPF but not in Silverlight 4, why?
body: <p>I have the following XAML, which works fine in WPF, but not in Silverlight 4</p>
  
  <pre><code>       &lt;ItemsPanelTemplate x:Key="ContentListBoxItemsPanelTemplate"&gt;
              &lt;Canvas/&gt;
          &lt;/ItemsPanelTemplate&gt;
  
          &lt;DataTemplate x:Key="ContentListBoxItemTemplate"&gt;
              &lt;Border CornerRadius="15" Width="150" Margin="3" Height="300"&gt;
                  &lt;Border.Background&gt;
                      &lt;LinearGradientBrush StartPoint="0,0" EndPoint="0,1"&gt;
                          &lt;GradientStop Color="OrangeRed" Offset="1" /&gt;
                          &lt;GradientStop Color="Brown" Offset="0" /&gt;
                      &lt;/LinearGradientBrush&gt;
                  &lt;/Border.Background&gt;
              &lt;/Border&gt;
          &lt;/DataTemplate&gt;
  
          &lt;Style TargetType="ListBoxItem"&gt;
              &lt;Setter Property="Canvas.Left" Value="{Binding Left}"/&gt;
              &lt;Setter Property="Canvas.Top" Value="{Binding Top}"/&gt;
          &lt;/Style&gt;
  </code></pre>
  
  <p>And then somewhere:</p>
  
  <pre><code> &lt;ListBox Name="ContentList" 
            ItemTemplate="{StaticResource ContentListBoxItemTemplate}"
            ItemsPanel="{StaticResource ContentListBoxItemsPanelTemplate}" /&gt;
  </code></pre>
  
  <p>If I try the same thing in Silverlight I get an exception saying that the setter cannot set a read only property, but I still want to achieve the same thing in Silverlight without code.</p>
  
  <p>Any suggestions?</p>