Обычно я бы сказал, использовать ItemsControl
в сочетании с Canvas
:
<ItemsControl ItemsSource="{Binding Ellipses}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemsContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding Left}"/>
<Setter Property="Canvas.Top" Value="{Binding Top}"/>
</Style>
</ItemsControl.ItemsContainerStyle>
</ItemsControl>
Но при отображении присущей Silverlight свойства ItemContainerStyle
не работает на ItemsControl
. Он имеет поддержку в ItemsControl
, но не выставляется самим ItemsControl
. Вместо этого это до подклассов ItemsControl
- таких как ListBox
- чтобы выставить это. Да, и эти подклассы должны быть предоставлены Microsoft, потому что функциональность protected internal
, поэтому вы не можете просто подкласс ItemsControl
и разоблачить этот материал самостоятельно. : S
Таким образом, вы могли бы вместо этого использовать ListBox
, возможно, подклассифицировав его и изменив его контейнер предметов на нечто более простое, чем ListBoxItem
. Или вы можете просто использовать ListBox
напрямую и возиться, пока ListBoxItem
не будут выглядеть так, как вы хотите (т.е. не выбрано).