【问题标题】:How do I dynamically size a GridView Item?如何动态调整 GridView 项的大小?
【发布时间】:2012-11-07 01:01:48
【问题描述】:

我有一个网格视图,用于显示“标签”,它是大小动态的字符串列表。使用以下代码:

<GridView ItemsSource="{Binding Tags}" 
          ItemTemplate="{StaticResource TagTemplate}" 
          VerticalAlignment="Bottom"
          Grid.RowSpan="2"
          SelectionMode="None"
          />

我对项目使用以下模板:

<DataTemplate x:Name="TagTemplate">
    <Border BorderBrush="Gray" BorderThickness="1" Opacity="75">
        <TextBlock Text="{Binding}"/>
    </Border>
</DataTemplate>

添加到 Grid 时,每个项目的大小都与第一个相同:

如何动态调整 GridView 中项目的大小?

【问题讨论】:

  • 你的 GridView 的大小是动态的还是静态的?您可以通过任何方式使用RowDataBound 事件根据插入的值更改单元格大小。
  • @Nick.T 它是静态大小的,但是标签可以滚动为seen here
  • 为什么不直接使用带有 StackPanel 或 WrapPanel 的 ItemsControl 作为您的 ItemsPanelTemplate?您可以轻松获得想要的外观。
  • @ChrisW。主要是因为我不知道它:P 这似乎正是我想要的,除了我无法让项目可滚动。
  • 然后将它们放在 ScrollViewer 中

标签: c# xaml gridview windows-8 windows-runtime


【解决方案1】:

类似的东西;

<ScrollViewer>
    <ItemsControl ItemsSource="{Binding Tags}">
        <!-- ItemsPanelTemplate -->
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
                <!-- Or use WrapPanel depending on its display -->
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <!-- ItemContainerStyle -->
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border BorderBrush="Gray" BorderThickness="1" Opacity="75" Padding="3" Margin="3,0">
                     <TextBlock Text="{Binding}"/>
                </Border>                             
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>

【讨论】:

  • 当然这并不是真正调整 GridView 的大小;调整 GridView 大小的唯一方法是使用 VariableSizedWrapGrid
  • 不,它与另一种选择一起消除了 GridView。
  • @JerryNixon 你会怎么做?
  • 看看我唯一不喜欢 gridview 的地方,就是所有的单元格都是相同的尺寸,我更多地使用 ItemsControl 来实现更灵活的设计实例。无论如何,至少这是我对这个实例的想法的一部分。
  • 您还可以为 Grid 添加 Row/ColumnDefinitions 并将其设置为“auto”,这将计算行/列的最佳大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多