Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF-将用户控件添加到列表框_Wpf_User Controls - Fatal编程技术网

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

WPF-将用户控件添加到列表框,wpf,user-controls,Wpf,User Controls,我正在尝试将用户控件添加到列表框中 My usercontrol包含一组基本元素,如textbox和dropdowns,以某种方式创建一行元素 我的主窗口中ListBox的代码如下所示: <GroupBox FontWeight="SemiBold" Foreground="#FF0CAEF9" Name="gbAddProducts" Style="{x:Null}" Header="ADD PRODUCTS" HorizontalAlignment="Left" Margin="0,2

我正在尝试将用户控件添加到列表框中

My usercontrol包含一组基本元素,如textbox和dropdowns,以某种方式创建一行元素

我的主窗口中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行。但它们是看不见的

这可能是某种“摆在前面”的问题

请告知


提前谢谢。

我会这样做:

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

我会这样做:

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


ContentControl绑定到的AddNewProductRowViewModel是什么?您应该将其绑定到AddNewProductRowViewModelList中的每个项。AddNewProductRowViewModel是用户控件的模型。我将ListBox绑定到UserControls列表-AddNewProductRowViewModelList。我认为从代码中已经很清楚了。也许你应该在绑定上放置一个带断点的转换器,以查看ContentControl正在接收什么。我不知道你的列表如何知道用户控件代表一行的另一个视图。你能解释一下你是如何理解这种联系的吗。“内容”属性接受一个视图(网格堆栈面板或其他控件),如果您按照属性的建议使用MVVM,则可以指定一个不是视图的视图模型。@Rafal-我将尝试解释。存在一个用户控件-AddNewProductRowView。在用户控件中,我提供了DataContext作为AddNewProductRowViewModel(这当然是一个模型)。当我独立打开它时,它的工作情况与预期的一样好。现在,在我的主窗口中,我添加了一个列表(上面的代码)。MainWidow将其DataContext设置为一个模型,该模型依次包含AddNewProductRowViewModel-ObservableCollection AddNewProductRowViewModelList的列表。在此模型中,我在mainWindow视图模型的构造函数中添加了五个用户控件。您将ContentControl绑定到的AddNewProductRowViewModel是什么?您应该将其绑定到AddNewProductRowViewModelList中的每个项。AddNewProductRowViewModel是用户控件的模型。我将ListBox绑定到UserControls列表-AddNewProductRowViewModelList。我认为从代码中已经很清楚了。也许你应该在绑定上放置一个带断点的转换器,以查看ContentControl正在接收什么。我不知道你的列表如何知道用户控件代表一行的另一个视图。你能解释一下你是如何理解这种联系的吗。“内容”属性接受一个视图(网格堆栈面板或其他控件),如果您按照属性的建议使用MVVM,则可以指定一个不是视图的视图模型。@Rafal-我将尝试解释。存在一个用户控件-AddNewProductRowView。在用户控件中,我提供了DataContext作为AddNewProductRowViewModel(这当然是一个模型)。当我独立打开它时,它的工作情况与预期的一样好。现在,在我的主窗口中,我添加了一个列表(上面的代码)。MainWidow将其DataContext设置为一个模型,该模型依次包含AddNewProductRowViewModel-ObservableCollection AddNewProductRowViewModelList的列表。在这个模型中,我在主窗口视图模型的构造函数中添加了五个用户控件。酷!!你一针见血……这就是我一直缺少的。非常感谢。太酷了!!你一针见血……这就是我一直缺少的。非常感谢。