WP7 WrapPanel& MVVM

时间:2011-01-04 06:10:53

标签: silverlight data-binding mvvm windows-phone-7

有没有办法通过绑定到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个公共属性 - ImageSourceBorderBrush

我在其构造函数中将DataContext的{​​{1}}设置为UserControl。但这不起作用,SelectionContent没有显示任何内容。

1 个答案:

答案 0 :(得分:3)

您应该使用ItemsControl。然后,您可以将WrapPanel设置为项目面板。

<ItemsControl ItemsSource="{Binding MyItemsSource}">
  <ItemsControl.ItemsPanel>
    <WrapPanel />
  </ItemsControl.ItemsPanel>
</ItemsControl>