【问题标题】:GridViewItem height adjust to content in Windows Phone 8.1GridViewItem 高度调整为 Windows Phone 8.1 中的内容
【发布时间】:2015-09-18 18:17:37
【问题描述】:

我正在使用 GridView 来显示一些产品。 当我设置 DataTemplate 时,我将 Width 和 Height 与静态值一起使用,并为我想要显示的数据定义一些行。

 <Grid Width="97" Height="180"">
       <Grid.RowDefinitions>
       <RowDefinition Height="80"/>
       <RowDefinition Height="20"/>
       <RowDefinition Height="*"/>

第一行是 80x80 的图像,第二行是价格。到目前为止,一切都很好。

然后我面临的问题是,即使最后一行显示的数据(带有产品名称),带有 TextBlock,只是一行,GridViewItem 采用定义的值高度属性。 有没有办法在 TextBlock 的文本上调整高度。我尝试将高度设置为自动,不包括网格和文本块,但文本没有完整显示在屏幕上。

【问题讨论】:

  • 有趣的是 Auto 不工作。文字是从屏幕的顶部/底部还是两侧?
  • 在两侧,并没有像我认为的那样向下延伸。
  • 这似乎是你的字体大小的问题。尺寸对于屏幕来说太大了,所以它会偏离侧面。我建议将最后一行放在 ViewBox 中,以便它可以根据需要上下扩展
  • 这会显示整个文本,但如果名称比其他名称长,则字体大小会发生变化。但更接近解决方案
  • 我为 ViewBox 设置了一个最大高度,但它仍然缩放设置为 16 的字体。这是一种设置最大高度并在 ViewBox 中显示最大字符数而不是全部字符的方法必要时发短信

标签: c# wpf gridview windows-phone-8.1


【解决方案1】:

我感觉你想要的是环绕的文本。您可以通过将文本设置为换行来实现这一点,如下面的代码所示:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="80"/>
        <RowDefinition Height="20"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <Grid Grid.Row="0" Background="Red" />
    <Grid Grid.Row="1" Background="Blue" />
        <TextBlock Grid.Row="2" TextWrapping="Wrap" Text="This is some text which will not fall off the edge because it is set to wrap around, and will continue filling down until the end of the screen because the grid is set to auto" />
</Grid>

【讨论】:

  • 我也试过了。 GridViewItems 仍然没有扩展。我相信这是必须的,因为它需要相同尺寸的项目。因此,当它获取第一个项目或第一行时,它会确定所有项目的高度。也许一个解决方案可能是根据 TexBlock 的长度从代码中设置文本块的高度,但我不喜欢它作为一个可靠的解决方案。
  • 这很奇怪,因为我复制和粘贴的解决方案在我的设计器中看起来像这样:gyazo.com/55e8620fe0c1f616c590acce0690f449
  • 是的,它适用于一项或其他具有静态文本长度的项目。我的 Gridview 使用数据绑定并包含 24 个产品,我认为无法从一开始就确定最大高度,因此它根据第一项设置它。
  • 如果您要展示不同的产品,我强烈建议您使用 ListView 而不是 TextBlock
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 2021-10-01
相关资源
最近更新 更多