silverlight:ItemsControl中列表框中的3个嵌套集合,将所选项绑定到一个集合

时间:2011-08-16 01:00:59

标签: silverlight binding listbox nested observablecollection

我有以下对象结构: AllProducts对象是ProductGroups对象的ObsCol,ProductGroup是LineItems的ObsCol,LineItems对象是LineItem对象的ObsCol

这就是我在嵌套列表框中的方式。

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>

和DataTemplates:

<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>

我想要完成的是能够在每个列表框中选择项目,并将所选项目绑定到我的VM中名为“SelectedCartItems”的LineItem的ObsCol。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用Model-View-ViewModel模式(MVVM)将ProductGroup实例包装在公开SelectedItem属性的ViewModel中,然后在ListBox中绑定它。在ViewModel中进行选择后,您可以随心所欲地做任何事情!