【问题标题】:silverlight: 3 nested Collections in listboxes inside ItemsControl, bind selected items to one collectionsilverlight:ItemsControl 内列表框中的 3 个嵌套集合,将所选项目绑定到一个集合
【发布时间】:2011-08-16 01:00:59
【问题描述】:

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

这就是我将它们放在嵌套列表框中的方式。

产品组 1

|订单项 1 |

|订单项 2 |

|订单项 3 |

产品组 2

| LineItem1 |

|订单项 2 |

|订单项 3 |

|订单项 4 |

这是我的列表框:

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

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

【问题讨论】:

    标签: silverlight binding listbox nested observablecollection


    【解决方案1】:

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

    【讨论】:

    • 我不了解 ColinE。我需要在 LineItem 级别获取选定的项目。每个单独的 ListBoxItem(来自不同的 ListBoxes)都是一个 LineItem,当被选中时应该进入一个 ObservableCollection
    猜你喜欢
    • 2011-03-23
    • 2011-05-28
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2016-05-16
    • 2012-08-23
    相关资源
    最近更新 更多