C# 添加更多my usercontrol容器或usercontrol集合显示

C# 添加更多my usercontrol容器或usercontrol集合显示,c#,.net,wpf,layout,user-controls,C#,.net,Wpf,Layout,User Controls,我不知道我要找的容器/控件将被调用,因此我无法真正搜索它 添加更多相同的Usercontrol Usercontrol 单击+会将My Usercontrol的新实例添加到现有实例的右侧 单击X将处理所单击的usercontrol 我并不是真的在寻找一个选项卡控件,它可以将每个新实例放在一个新的选项卡上,但是如果没有其他东西,它可能会这样做。 显然,设计并非如图所示,图中仅说明了基本理念 是否有任何关键字/名称建议或现有实现的链接? e、 g.也许有一种样式可以将列表框转换为合适的样式?您确实可

我不知道我要找的容器/控件将被调用,因此我无法真正搜索它

添加更多相同的Usercontrol Usercontrol 单击+会将My Usercontrol的新实例添加到现有实例的右侧 单击X将处理所单击的usercontrol 我并不是真的在寻找一个选项卡控件,它可以将每个新实例放在一个新的选项卡上,但是如果没有其他东西,它可能会这样做。 显然,设计并非如图所示,图中仅说明了基本理念 是否有任何关键字/名称建议或现有实现的链接?
e、 g.也许有一种样式可以将列表框转换为合适的样式?

您确实可以使用列表框并设置其ItemTemplate和ItemsPanelTemplate:

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"></StackPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding Name}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

当然,您的ItemTemplate将是对控件的引用。

您确实可以使用列表框并设置其ItemTemplate和ItemsPanelTemplate:

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"></StackPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding Name}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

当然,您的ItemTemplate将是对控件的引用。

您可以查看一个称为carousel控件的东西,该控件使用其后面的对象列表,并以类似于itunes的方式显示它们。这可能有点过头了,但这是一个解决方案。可以看到一个例子


如果这对于您的需要来说太高级了,它是否可以像stackpanel一样简单,带有一个绑定到用户控件列表的滚动条?

您可以查看一个称为carousel控件的东西,该控件使用其后面的对象列表,并以类似于itunes的方式显示它们。这可能有点过头了,但这是一个解决方案。可以看到一个例子

如果这对于您的需要来说太高级了,它是否可以像stackpanel一样简单,带有一个绑定到用户控件列表的滚动条?

我会使用ItemsControl并自定义它的ItemsPanelTemplate,使其成为您想要的任何内容

ItemsControl用于迭代对象集合,并以您想要的任何形式显示它们。如果您感兴趣,我为它们编写了一些简单的代码示例,或者下面是另一个快速示例:

<DockPanel x:Name="RootPanel">
    <Button Style="{StaticResource AddButtonStyle}"
            DockPanel.Dock="Right" VerticalAlignment="Center"
            Command="{Binding AddItemCommand" />

    <ScrollViewer>
        <ItemsControl ItemsSource="{Binding MyCollection}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <local:MyUserControl />

                        <Button Style="{StaticResource RemoveButtonStyle}"
                            Command="{Binding ElementName=RootPanel, Path=DataContext.RemoveItemCommand}"
                            CommandParameter="{Binding }"
                            HorizontalAlignment="Left" VerticalAlignment="Top" />
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>
</DockPanel>
ItemsControl将绑定到对象的ObservableCollection,而Add/Remove按钮只需从该集合中添加/删除项。由于它是一个ObservableCollection,当集合发生更改并自动更新时,它将通知UI。

我将使用ItemsControl并将其ItemsPanelTemplate自定义为您想要的任何内容

ItemsControl用于迭代对象集合,并以您想要的任何形式显示它们。如果您感兴趣,我为它们编写了一些简单的代码示例,或者下面是另一个快速示例:

<DockPanel x:Name="RootPanel">
    <Button Style="{StaticResource AddButtonStyle}"
            DockPanel.Dock="Right" VerticalAlignment="Center"
            Command="{Binding AddItemCommand" />

    <ScrollViewer>
        <ItemsControl ItemsSource="{Binding MyCollection}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <local:MyUserControl />

                        <Button Style="{StaticResource RemoveButtonStyle}"
                            Command="{Binding ElementName=RootPanel, Path=DataContext.RemoveItemCommand}"
                            CommandParameter="{Binding }"
                            HorizontalAlignment="Left" VerticalAlignment="Top" />
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>
</DockPanel>

ItemsControl将绑定到对象的ObservableCollection,而Add/Remove按钮只需从该集合中添加/删除项。由于它是一个可观察的集合,当集合发生更改并自动更新时,它将通知用户界面。

carousel看起来不错!为了使它满足我的需要,1我如何使每个项目都有一个X点击,这将删除该项目,2我将始终在列表的末尾添加一个项目,这将是+用户控件,单击哪个将添加新项目?在每个项目的模板中,您可以添加一个按钮,单击该按钮将从绑定到旋转木马的列表中删除所选项目。这反过来将从传送带中删除该项目。我还没有使用链接文章中的旋转木马控件。这是我在寻找时发现的最完整的例子。我会想象在列表中添加一个项目会将其添加到旋转木马列表的末尾。旋转木马看起来很可爱!为了使它满足我的需要,1我如何使每个项目都有一个X点击,这将删除该项目,2我将始终在列表的末尾添加一个项目,这将是+用户控件,单击哪个将添加新项目?在每个项目的模板中,您可以添加一个按钮,单击该按钮将从绑定到旋转木马的列表中删除所选项目。这反过来将从传送带中删除该项目。我还没有使用链接文章中的旋转木马控件。这是我在寻找时发现的最完整的例子。我可以想象,在列表中添加一个项目会将其添加到旋转木马列表的末尾。谢谢!我还有一个问题要问,第一条评论是53AN?谢谢!我还有一个问题,53AN的第一条评论是什么?