包裹面板和项目集合
本文关键字:项目 集合 包裹 | 更新日期: 2023-09-27 18:02:51
我有一个定义为
的集合 public class BraiderList : ObservableCollection <Braider>
的对象定义为
public class Braider : INotifyPropertyChanged
显示数据的XAML代码如下所示。就目前而言,一切工作正常,但我想改变如何在我的收集项目显示。我想有每个项目在我的集合是一个单独的项目在一个包裹面板,而不是他们都是一个控件的一部分。在XAML中有什么方法可以做到这一点,还是我需要用c#来编写代码? <Border Grid.Row="1" BorderBrush="Black" BorderThickness="5" CornerRadius="8" Margin="2,2" ClipToBounds="True" >
<WrapPanel Name="WPanel1">
<Border Margin="5" Padding="5">
<ItemsControl Name="MyList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Name="SPanel1">
<Image Source="{StaticResource BraiderImage}" Height ="75" Width="150" Visibility ="{Binding ShowIcon}"/>
<Label Content= "{Binding Name}" Visibility ="{Binding ShowName}" HorizontalAlignment="Center"/>
<Label Content= "{Binding ProductionCounter}" ContentStringFormat="Production Counter: {0:0.0}" Visibility ="{Binding ShowProductionCounter}" />
<Label Content= "{Binding LeadFront}" ContentStringFormat="Lead, Front Deck: {0:0.0}" Visibility ="{Binding ShowLeadFront}"/>
<Label Content= "{Binding LeadBack}" ContentStringFormat="Lead, Back Deck: {0:0.0}" Visibility ="{Binding ShowLeadBack}"/>
<Label Content= "{Binding Address}" ContentStringFormat="IP Address: {0}" Visibility ="{Binding ShowIP}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</WrapPanel>
</Border>
你的XAML好像有问题。
你要找的是将WrapPanel
设置为ItemsControl
的ItemsPanel
,这样ItemsControl
使用WrapPanel
来布局它的项目,而不是在WrapPanel
本身内部,像这样:
<!-- No Need for a WrapPanel outside the ItemsControl, remove it -->
<Border>
<ItemsControl Name="MyList">
<!-- use a WrapPanel as the ItemsPanel for this ItemsControl -->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- Rest of your XAML here -->
</ItemsControl>
</Border>