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