Я пытаюсь установить свойства Canvas в ItemsControl DataTemplate с Silverlight 3. Согласно этот пост, единственный способ сделать это - установить его с помощью ItemsContainerStyle для типа ContentPresenter, так как свойства Canvas действуют только на прямых дочерних элементов Canvas. Это, похоже, не работает в SL3, поскольку ItemControl не имеет свойства ItemsContainerStyle, поэтому я попробовал ListBox по рекомендации этой статьи, но он все равно не работает. Из XAML ниже я ожидал бы увидеть зеленый квадрат с цифрами 10, 30, 50, 70, каскадом от "NW" до "SE". Может ли кто-нибудь сказать мне, почему все они сложены на вершине eachother в углу NW?
<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>