WPF - 将用户控件添加到列表框

时间:2013-10-02 06:11:24

标签: wpf user-controls

我正在尝试将 usercontrol 添加到 ListBox

我的usercontrol包含一组基本元素,如文本框和下拉列表,以便创建一行元素。

我主窗口中ListBox的代码为 -

<GroupBox FontWeight="SemiBold" Foreground="#FF0CAEF9" Name="gbAddProducts" Style="{x:Null}" Header="ADD PRODUCTS" HorizontalAlignment="Left" Margin="0,256,0,0" VerticalAlignment="Top" Width="990" Height="207">
        <ListBox Name="lstboxAddProduct" ItemsSource="{Binding Path=AddNewProductRowViewModelList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" BorderThickness="0" Margin="0,10,-2,23">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical">
                            <ContentControl Content="{Binding AddNewProductRowViewModel}" />
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
                <Validation.ErrorTemplate>
                    <ControlTemplate>
                        <StackPanel>
                            <AdornedElementPlaceholder x:Name="aepForError"/>
                            <ItemsControl ItemsSource="{Binding}">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding ErrorContent}"  Foreground="White" Background="#DC000C" />
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </StackPanel>
                    </ControlTemplate>
                </Validation.ErrorTemplate>
            </ListBox>

        </GroupBox>

此处 AddNewProductRowViewModelList 是包含5个控件的用户控件列表。 我看到的问题是,当我运行代码时,屏幕有5行,即我可以点击该区域以确定该区域是5行,因为该区域被突出显示。但它们并不可见。

可能是某种“带头”问题。

请告知。

提前致谢。

1 个答案:

答案 0 :(得分:4)

我会这样做:

<ListBox.ItemTemplate>
   <DataTemplate>
      <StackPanel Orientation="Vertical">
         <ContentControl>
            <local:AddNewProductRowView Datacontext="{Binding AddNewProductRowViewModel}"/>
          </ContentControl>
         </StackPanel>
       </DataTemplate>
     </ListBox.ItemTemplate>