Skip to main content
 首页 » 编程设计

c#之添加更多我的用户控件容器或用户控件集合显示

2024年02月23日36lyhabc

我不知道我正在寻找的容器/控件会被称为什么,所以我无法真正搜索它。

添加更多相同的Usercontrol Usercontrol

  • 点击 + 会在现有控件的右侧添加一个新的 My Usercontrol 实例
  • 点击 X 将释放被点击的用户控件
  • 我并不是真的在寻找将每个新实例放在新选项卡上的选项卡控件,但如果没有其他任何东西,它可能会这样做。
  • 设计显然不是图片所示,图片只是说明基本思想

有任何关键字/名称建议或指向现有实现的链接吗?

例如也许有一种样式可以将 ListBox 变成合适的东西?

请您参考如下方法:

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

ItemsControls 用于遍历对象集合,并以您想要的任何形式显示它们。我写了一些简单的代码示例 here如果您有兴趣,或者这是另一个简单的例子:

<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 将绑定(bind)到对象的 ObservableCollection,而您的添加/删除按钮将简单地从该集合中添加/删除项目。由于它是一个 ObservableCollection,当集合发生变化时它会通知 UI 并自动更新。