英文:
Listbox items not wrapping, tried almost everything. it might be due to ItemTemplate
问题
尝试将WrapPanel添加为父元素、子元素以及项目模板的父元素,但不起作用
<UserControl.Resources>
    <DataTemplate x:Key="CredentialTemplate" DataType="{x:Type local:Credentials}">
        <WrapPanel Width="800" Orientation="Horizontal">
            <Grid Background="Red" Width="160" Height="160">
                <Grid.RowDefinitions>
                    <RowDefinition Height="40"/>
                    <RowDefinition/>
                    <RowDefinition/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding FileName}" FontWeight="Bold" Margin="0,0,10,0"/>
                <Button Grid.Row="1" Grid.Column="0" x:Name="btnCopyUsername" Tag="{Binding Button}" Content="Copy Username" Click="OnCopyUsernameButtonClicked" Margin="10"/>
                <Button Grid.Row="1" Grid Column="1" x:Name="btnCopyPassword" Tag="{Binding Button}" Content="Copy Password" Click="OnCopyPasswordButtonClicked" Margin="10"/>
                <Button Grid.Row="2" Grid.Column="0" x:Name="btnEdit" Tag="{Binding Button}" Content="Edit" Click="OnEditButtonClicked" Margin="10"/>
                <Button Grid.Row="2" Grid.Column="1" x:Name="btnCopyBoth" Tag="{Binding Button}" Content="Copy Both" Click="OnCopyBothButtonClicked" Margin="10"/>
            </Grid>
        </WrapPanel>
    </DataTemplate>
</UserControl.Resources>
<WrapPanel Width="900" Background="Yellow">
    <ListBox ItemsSource="{Binding Credentials}" ItemTemplate="{StaticResource CredentialTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal" Background="Green" Margin="10"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</WrapPanel>
</UserControl>
可能是Grid控件不允许包装,通常情况下,没有项目模板的情况下应该可以工作。
英文:
**Tried adding wrap panel as parent, as child, as item template parent, but didn't work
**
    <UserControl.Resources>
<DataTemplate x:Key="CredentialTemplate" DataType="{x:Type local:Credentials}">
<WrapPanel Width="800" Orientation="Horizontal">
<Grid Background="Red" Width="160" Height="160">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding FileName}" FontWeight="Bold" Margin="0,0,10,0"/>
<Button Grid.Row="1" Grid.Column="0" x:Name="btnCopyUsername" Tag="{Binding Button}" Content="Copy Username" Click="OnCopyUsernameButtonClicked" Margin="10"/>
<Button Grid.Row="1" Grid.Column="1"  x:Name="btnCopyPassword" Tag="{Binding Button}" Content="Copy Password" Click="OnCopyPasswordButtonClicked" Margin="10"/>
<Button Grid.Row="2" Grid.Column="0" x:Name="btnEdit" Tag="{Binding Button}" Content="Edit" Click="OnEditButtonClicked" Margin="10"/>
<Button Grid.Row="2" Grid.Column="1" x:Name="btnCopyBoth" Tag="{Binding Button}" Content="Copy Both" Click="OnCopyBothButtonClicked" Margin="10"/>
</Grid>
</WrapPanel>
</DataTemplate>
</UserControl.Resources>
<WrapPanel Width="900" Background="Yellow">
<ListBox ItemsSource="{Binding Credentials}" ItemTemplate="{StaticResource CredentialTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"  ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" Background="Green" Margin="10"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</WrapPanel>
</UserControl>
It might be the grid control that not letting wrap, normally without item template it should work
答案1
得分: 0
我使用了你的标记的简化版本来探讨这个问题。
我没有凭证类,但格子里的内容并不重要。
我的标记中有更少的wrappanels:
<Grid>
    <Grid.Resources>
        <DataTemplate x:Key="CredentialTemplate">
            <Grid Background="Red" Width="40" Height="40">
            </Grid>
        </DataTemplate>
    </Grid.Resources>
    <ListBox ItemsSource="{Binding Points}" 
             ItemTemplate="{StaticResource CredentialTemplate}" 
             ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
             ScrollViewer.VerticalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal" 
                           Background="Green" Margin="10"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</Grid>
我的视图模型中有30个点。
我的网格较小
正常包裹:
英文:
I explored this issue with a simplified version of your markup.
I don't have a credentials class, but what's in the grids doesn't matter.
My markup has less wrappanels:
    <Grid>
<Grid.Resources>
<DataTemplate x:Key="CredentialTemplate">
<Grid Background="Red" Width="40" Height="40">
</Grid>
</DataTemplate>
</Grid.Resources>
<ListBox ItemsSource="{Binding Points}" 
ItemTemplate="{StaticResource CredentialTemplate}" 
ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" 
Background="Green" Margin="10"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Grid>
I've got 30 Points in my viewmodel.
My grid is smaller
Wraps ok:
答案2
得分: 0
以下是您要翻译的内容:
<List view Item Template with wrapping list view items>
in my case i have sales man list and i am displaying sales man name in round button using Wrap Panel.
    <ListView Grid.Column="1"  Grid.Row="3"  Name="lv" 
          Style="{DynamicResource NewCollectionInfoModuleSalesRepListViewStyle}"
          SelectedValue="{Binding Path=SelectedSalseRepData,
                                  Mode=TwoWay, 
                                  UpdateSourceTrigger=PropertyChanged,
                                  NotifyOnValidationError=True, 
                                  ValidatesOnDataErrors=True, ValidatesOnExceptions=True}">
            
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions >
                            <RowDefinition Height="80" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="188" />
                        </Grid.ColumnDefinitions>
                        <Button  Grid.Row="0" Grid.Column="0"
                                 HorizontalAlignment="Stretch"
                                 VerticalAlignment="Stretch"
                                 Style="{DynamicResource NewCollectionInfoModuleSalesRepListButtonStyle}"
                                 Background="{Binding Path=SelectedSalesRepColor,Mode=TwoWay}"
                                 IsEnabled="False">
                            <StackPanel>
                                <TextBlock  Grid.Row="0" Grid.Column="0"
                                                    Style="{DynamicResource NewCollectionInfoModuleSalesRepListTextBlockStyle}"
                                                    Text="{Binding Path=Name,Mode=TwoWay}"
                                                    Foreground="{Binding Path=SelectedSalesRepTextBlockColor,Mode=TwoWay}">
                                </TextBlock>
                            </StackPanel>
                        </Button>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
英文:
List view Item Template with wrapping list view items
in my case i have sales man list and i am displaying sales man name in round button using Wrap Panel.
<ListView Grid.Column="1"  Grid.Row="3"  Name="lv" 
Style="{DynamicResource NewCollectionInfoModuleSalesRepListViewStyle}"
SelectedValue="{Binding Path=SelectedSalseRepData,
Mode=TwoWay, 
UpdateSourceTrigger=PropertyChanged,
NotifyOnValidationError=True, 
ValidatesOnDataErrors=True, ValidatesOnExceptions=True}"
ItemContainerStyle="{DynamicResource NewCollectionInfoModuleSalesRepListViewItemStyle}"
ItemsSource="{Binding Path=lstSalesRepresentative}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions >
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="188" />
</Grid.ColumnDefinitions>
<Button  Grid.Row="0" Grid.Column="0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Style="{DynamicResource NewCollectionInfoModuleSalesRepListButtonStyle}"
Background="{Binding Path=SelectedSalesRepColor,Mode=TwoWay}"
IsEnabled="False">
<StackPanel>
<TextBlock  Grid.Row="0" Grid.Column="0"
Style="{DynamicResource NewCollectionInfoModuleSalesRepListTextBlockStyle}"
Text="{Binding Path=Name,Mode=TwoWay}"
Foreground="{Binding Path=SelectedSalesRepTextBlockColor,Mode=TwoWay}">
</TextBlock>
</StackPanel>
</Button>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。



评论