C# 如何提供从StackPanel中删除项目的关闭功能?
我有一个UserControl,我需要在运行时(每个用户的操作)不断将它添加到StackPanel中。我想在StackPanel中的每个项目的右上角都有一个关闭按钮(一个小“x”) 我可以这样做:将我的UserControl添加到某个面板中,该面板上的“x”按钮在鼠标悬停时会发光,单击该按钮会从StackPanel中删除该项 然而,我正在寻找一个更好的解决这个问题的办法。有没有提供类似功能的控件 我在找TileView。所有我需要的是一个单一的瓷砖行保持每个用户输入添加,并有能力删除一个“瓷砖”。每个磁贴都包含我的UserControlC# 如何提供从StackPanel中删除项目的关闭功能?,c#,wpf,stackpanel,C#,Wpf,Stackpanel,我有一个UserControl,我需要在运行时(每个用户的操作)不断将它添加到StackPanel中。我想在StackPanel中的每个项目的右上角都有一个关闭按钮(一个小“x”) 我可以这样做:将我的UserControl添加到某个面板中,该面板上的“x”按钮在鼠标悬停时会发光,单击该按钮会从StackPanel中删除该项 然而,我正在寻找一个更好的解决这个问题的办法。有没有提供类似功能的控件 我在找TileView。所有我需要的是一个单一的瓷砖行保持每个用户输入添加,并有能力删除一个“瓷砖”
请让我知道,您可以使用tileview,但网格也可以在这里工作,您可以将usercontrol添加到单元格,在其他单元格上,您可以提供关闭按钮,在关闭按钮上单击,您可以从网格中删除该行,
如果您要添加多个usercontrol,则网格很容易维护。您可以使用ItemsControl轻松完成此操作。把它想象成一个没有选择的列表框。只需稍微修改一下:
<ItemsControl HorizontalAlignment="Center" VerticalAlignment="Center">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Padding="4" Background="CornflowerBlue">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Content="Close" HorizontalAlignment="Right"/>
<Grid Margin="4" Grid.Row="1">
<!-- put your usercontrol here -->
</Grid>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
+1以获取替代解决方案。但是,我希望我的用户控件水平添加,就像我的示例中StackPanel的Orientation=“Horizontal”一样。还有,这是唯一的办法吗?如果你只想要水平方向,我建议你只使用一行,可以根据需要动态添加或删除coulum。