WP7 WrapPanel & MVVM - PullRequest
       3

WP7 WrapPanel & MVVM

1 голос
/ 04 января 2011

Есть ли способ заполнить набор инструментов Silverlight WrapPanel путем привязки к ObservableCollection? Все примеры, которые я видел до сих пор, включая сам пример инструментария, либо заполняют WrapPanel программно, либо явно добавляя каждый элемент в XAML.

Спасибо за вашу помощь!

EDIT : следуя совету Гирта ван Хоррика Я пытался использовать 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 для UserControl в его конструкторе на SelectionContent. Но это не работает, и WrapPanel ничего не отображает.

1 Ответ

3 голосов
/ 04 января 2011

Вы должны использовать ItemsControl.Затем вы можете установить WrapPanel в качестве панели элементов.

<ItemsControl ItemsSource="{Binding MyItemsSource}">
  <ItemsControl.ItemsPanel>
    <WrapPanel />
  </ItemsControl.ItemsPanel>
</ItemsControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...