包裹面板和项目集合

本文关键字:项目 集合 包裹 | 更新日期: 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设置为ItemsControlItemsPanel,这样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>