【问题标题】:WPF Listview DisplayWPF 列表视图显示
【发布时间】:2013-12-17 00:32:18
【问题描述】:

我正在尝试通过 RectangleBox 显示 Listview 项目(我使用 ControlTemplate 设法做到了)

我的问题是 RectangleBox 在窗口上的组织方式。 我想在一行上显示尽可能多的内容(取决于窗口的宽度),当一行被填满时,开始新的一行,依此类推。 每次调整大小后,都会根据窗口的宽度更新组织:

这可能会更好地了解我想要什么,您会看到窗口上的每个 RectangleBox (Labeled 1,2...) 组织根据其宽度而变化。

这是我在 MainWindow xaml 中的当前代码:

<ListView Name="PlayerList" ItemsSource="{Binding Players}"> 
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
             <UniformGrid/>
         </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

应用了以下样式:

<Style TargetType="ListViewItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListViewItem}">
                <GroupBox Header="{Binding Name}" Width="250" Height="125" Name="Disp" HorizontalAlignment="Left">
                    <GroupBox.HeaderTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,0,0,0" TextAlignment="Right"></TextBlock>
                                </StackPanel>
                            </DataTemplate>
                        </GroupBox.HeaderTemplate>
                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="{Binding Char}"/>
                            <TextBlock Text="{Binding Item}"/>
                        </StackPanel>
                    </GroupBox>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

但到目前为止,UniformGrid 只是一次失败的尝试,我一直在环顾四周,但无法真正找到解决方案。希望只是我很笨,遗漏了一些明显的东西 D:

感谢您的帮助。

【问题讨论】:

  • 我不太了解 ListViewItems 的 ControlTemplate。您能否提供一些数据项类型的详细信息以及应如何可视化?否则 UniformGrid 似乎是正确的方法,它应该按照您使用它的方式工作。
  • WrapPanel 可以工作吗?
  • @Clemens UniformGrid 有一些不符合我想要的布局规范,通过根据它们的数量等来不同地间隔项目。对于 ControlTemplate,不确定你想看到什么,我只是在实现 RectangleBox 时重载了样式(我这样做是为了消除高亮效果)
  • @Chris 谢谢,就是这样=p

标签: wpf listview layout listviewitem


【解决方案1】:

感谢几位cmets。

WrapPanel 确实是正确的方法,只是没有想到:P 我只需要添加以下属性:

ScrollViewer.HorizontalScrollBarVisibility="Disabled"

到我的列表视图,以避免所有项目堆叠在一行上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2015-10-24
    相关资源
    最近更新 更多