Cómo usar Canvas como ItemsPanel para un ItemsControl en Silverlight 3
Estoy tratando de establecer las propiedades del lienzo en una plantilla de datos de control de elementos con Silverlight 3. De acuerdo conesta publicación, la única forma de hacerlo es establecerlo usando ItemsContainerStyle para el tipo ContentPresenter, ya que las propiedades del Canvas solo tienen efecto en los hijos directos del Canvas. Esto no parece funcionar en SL3, ya que ItemsControl no tiene una propiedad ItemsContainerStyle, así que probé un ListBox según lo aconsejado porEste artículo, pero aún no funciona. Desde el XAML a continuación, esperaría ver un cuadrado verde, con los números 10, 30, 50, 70 en cascada desde la dirección "NO" a "SE". ¿Alguien puede decirme por qué están todos apilados uno encima del otro en la esquina NO?
<UserControl x:Class="TestControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib" >
<StackPanel>
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Background="Green" Width="100" Height="100" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding}" />
<Setter Property="Canvas.Top" Value="{Binding}" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.Items>
<System:Int32>10</System:Int32>
<System:Int32>30</System:Int32>
<System:Int32>50</System:Int32>
<System:Int32>70</System:Int32>
</ListBox.Items>
</ListBox>
</StackPanel>
</UserControl>