silverlight: 3 вложенных коллекции в списках внутри ItemsControl, привязка выбранных элементов к одной коллекции - PullRequest
0 голосов
/ 16 августа 2011

У меня есть следующая структура объекта: Объект AllProducts является ObsCol объектов ProductGroups, ProductGroup является ObsCol объектов LineItems, а объект LineItems является ObsCol объектов LineItem

Вот как они у меня во вложенных списках.

ProductGroup 1

| LineItem 1 |

| LineItem 2 |

| LineItem 3 |

ProductGroup 2

| LineItem1 |

| LineItem 2 |

| LineItem 3 |

| LineItem 4 |

Вот мой ListBox:

<ItemsControl x:Name="lstProductGroups"  ItemsSource="{Binding}" ItemTemplate="{StaticResource ProductListItem}">
                        </ItemsControl>

и шаблоны данных:

<DataTemplate x:Key="LineItemsTemplate">
        <StackPanel Orientation="Horizontal">
            <Image Source="{Binding ImageUrl}" Height="50" Width="50" />
            <StackPanel Orientation="Vertical" Width="350">
                <TextBlock HorizontalAlignment="Left" TextWrapping="NoWrap" Text="{Binding Name}"/>
                <TextBlock TextWrapping="Wrap" Text="{Binding Description}" HorizontalAlignment="Left"/>
            </StackPanel>
            <TextBlock TextWrapping="Wrap" Text="{Binding Price}"/>
        </StackPanel>
    </DataTemplate>
    <DataTemplate x:Key="ProductListItem">
        <StackPanel x:Name="GridDataHolder">
                <TextBlock TextWrapping="Wrap" FontWeight="Bold" Text="{Binding GroupName}" VerticalAlignment="Top" d:LayoutOverrides="Width"/>
                <ListBox x:Name="lstLineItems" ItemsSource="{Binding LineItems}" Width="500" ItemTemplate="{StaticResource LineItemsTemplate}" SelectionMode="{Binding IsListType, Converter={StaticResource BoolToSelectionModeConverter}}" ItemContainerStyle="{StaticResource LineItemsStyle}">
                </ListBox>
        </StackPanel>
    </DataTemplate>

То, что я пытаюсь сделать, - это иметь возможность выбирать элементы в каждом из списков и привязывать выбранные элементы к ObsCol из LineItem, называемому «SelectedCartItems» в моей виртуальной машине. Есть идеи?

1 Ответ

0 голосов
/ 16 августа 2011

Используя шаблон Model-View-ViewModel (MVVM), оберните ваши экземпляры ProductGroup в ViewModel, которые предоставляют свойство SelectedItem, а затем свяжите это с вашим ListBox. Если у вас есть выбор в вашей ViewModel, вы можете делать с ним все что угодно!

...