有没有办法通过绑定到WrapPanel
来填充Silverlight工具包的ObservableCollection
?到目前为止我见过的所有示例,包括工具包示例本身,都可以通过编程方式填充WrapPanel
,或者通过在XAML中显式添加每个项目。
感谢您的帮助!
编辑:关注Geert van Horrik's advice我尝试使用ItemsControl
加载WrapPanel
通过绑定。这是XAML:
<ScrollViewer VerticalScrollBarVisibility="Auto"
Height="440"
Margin="0,12,0,0">
<ItemsControl ItemsSource="{Binding SelectionContent}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1"
CornerRadius="4"
BorderBrush="{Binding BorderBrush}">
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener Tap="OnWrapPanelTapped"
DoubleTap="OnWrapPanelDoubleTapped" />
</toolkit:GestureService.GestureListener>
<Image Source="{Binding ImageSource}"
MaxHeight="48"
MaxWidth="48"
Margin="16" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
SelectionContent
是此ObservableCollection
代码中的UserControl
。它由SelectionItem
对象组成,该对象实现INotifyPropertyChanged
并公开2个公共属性 - ImageSource
和BorderBrush
。
我在其构造函数中将DataContext
的{{1}}设置为UserControl
。但这不起作用,SelectionContent
没有显示任何内容。
答案 0 :(得分:3)
您应该使用ItemsControl。然后,您可以将WrapPanel设置为项目面板。
<ItemsControl ItemsSource="{Binding MyItemsSource}">
<ItemsControl.ItemsPanel>
<WrapPanel />
</ItemsControl.ItemsPanel>
</ItemsControl>