简体   繁体   English

WPF Listview 水平列表

[英]WPF Listview Horizontal List

I am using listview in my WPF project.我在我的 WPF 项目中使用列表视图。 But the items are listed horizontally.但是这些项目是水平列出的。 I want it to be listed vertically and pass to the second column without a vertical scrollbar.我希望它垂直列出并传递到没有垂直滚动条的第二列。 How can I do that?我怎样才能做到这一点?

What I want to do:我想做的事:

例子

My listview code:我的列表视图代码:

<ListView Grid.Row="1" x:Name="listviewViews" HorizontalContentAlignment="Stretch" Visibility="Visible"
                                      ScrollViewer.VerticalScrollBarVisibility="Disabled" 
                                      SelectionMode="Single" PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown" SelectionChanged="listviewViews_SelectionChanged">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Height="{Binding (FrameworkElement.Height)}"
                           Width="{Binding (FrameworkElement.ActualWidth), 
                    RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}"
                        ItemWidth="{Binding (ListView.View).ItemWidth, 
                    RelativeSource={RelativeSource AncestorType=ListView}}"
                        MinWidth="{Binding ItemWidth, RelativeSource={RelativeSource Self}}"
                        ItemHeight="{Binding (ListView.View).ItemHeight, 
                    RelativeSource={RelativeSource AncestorType=ListView}}" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" Width="190">
                    <Grid HorizontalAlignment="Right" Margin="0 5" VerticalAlignment="Stretch">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition MinWidth="150"/>
                            <ColumnDefinition Width="35"/>
                        </Grid.ColumnDefinitions>
                        <StackPanel Orientation="Horizontal" Grid.Column="0">
                            <TextBlock FontFamily="{StaticResource FontAwesome}" Margin="5 0" VerticalAlignment="Center">
                                <TextBlock.Style>
                                    <Style TargetType="{x:Type TextBlock}">
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding IsDisabled}" Value="True">
                                                <Setter Property="Text" Value="&#xf070;" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </TextBlock.Style>
                            </TextBlock>
                            <TextBlock x:Name="txt" Text="{Binding ViewName}" VerticalAlignment="Center" Grid.Column="0"/>
                        </StackPanel>
                        <Button x:Name="btnViewDelete" ToolTip="{DynamicResource Delete}" Click="btnViewDelete_Click" Grid.Column="1">
                            <TextBlock HorizontalAlignment="Right" Text="&#xf1f8;" FontFamily="{StaticResource FontAwesome}" FontSize="12" VerticalAlignment="Center"/>
                        </Button>
                    </Grid>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Control this behavior via WrapPanel 's Orientation property通过WrapPanelOrientation属性控制此行为

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapPanel Orientation="Vertical" ... />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

I edited the code as you said, but still one line remains below and vertical scrolling occurs:我按照你说的编辑了代码,但是下面仍然有一行,并且发生了垂直滚动:

Screenshot截屏

Listview code:列表视图代码:

<ListView Grid.Row="1" x:Name="listviewPools" HorizontalContentAlignment="Stretch" 
                  ScrollViewer.VerticalScrollBarVisibility="Hidden">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Vertical"
                               Height="{Binding (FrameworkElement.ActualHeight)}"
                               Width="{Binding (FrameworkElement.Width), 
                        RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}"
                            ItemWidth="{Binding (ListView.View).ItemWidth, 
                        RelativeSource={RelativeSource AncestorType=ListView}}"
                            MinWidth="{Binding ItemWidth, RelativeSource={RelativeSource Self}}"
                            ItemHeight="{Binding (ListView.View).ItemHeight, 
                        RelativeSource={RelativeSource AncestorType=ListView}}" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid HorizontalAlignment="Right" Margin="0 5">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="150"/>
                            <ColumnDefinition Width="30"/>
                            <ColumnDefinition Width="30"/>
                            <ColumnDefinition Width="30"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock x:Name="txt" Text="{Binding PoolName}" VerticalAlignment="Center" Grid.Column="0"/>
                        <Button x:Name="btnFilters" ToolTip="{DynamicResource Filters}" Click="btnFilters_Click" Grid.Column="1">
                            <TextBlock HorizontalAlignment="Right" Text="&#xf0b0;" FontFamily="{StaticResource FontAwesome}" FontSize="12"  VerticalAlignment="Center"/>
                        </Button>
                        <Button x:Name="btnPoolEdit" ToolTip="{DynamicResource Edit}" Click="btnPoolEdit_Click" Grid.Column="2">
                            <TextBlock HorizontalAlignment="Right" Text="&#xf304;" FontFamily="{StaticResource FontAwesome}" FontSize="12"  VerticalAlignment="Center"/>
                        </Button>
                        <Button x:Name="btnPoolDelete" ToolTip="{DynamicResource Delete}" Click="btnPoolDelete_Click" Grid.Column="3">
                            <TextBlock HorizontalAlignment="Right" Text="&#xf1f8;" FontFamily="{StaticResource FontAwesome}" FontSize="12"  VerticalAlignment="Center"/>
                        </Button>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM