【问题标题】:Why is the height of my rectangle 0?为什么我的矩形的高度是 0?
【发布时间】:2015-01-10 17:57:20
【问题描述】:

以下 wpf 矩形的宽度为 20,高度为 0。
我想知道为什么会这样。

<DataGridTemplateColumn Header="R" Width="20" MaxWidth="20" MinWidth="20">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Border BorderBrush="Green">
                <Rectangle Fill="Red"/>
            </Border>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

【问题讨论】:

  • 边框的高度是多少?你对矩形使用某些样式吗?
  • 无隐藏样式。边框如上 - 它适合其内容,因此高度也为 0。事实上,ContentPresenter 的高度也为 0,所以问题在于DataTemplate 假定它没有内容。
  • 你必须明确设置宽度和高度。
  • @KK:好吧,Width 是自动的。设置为 20,所以“不必”。当然设置Height=23 有效。我想知道为什么 W/H 的行为不同。
  • 如果Height 应该是除 0 以外的某个值或非常小的值,您希望它是哪个值?自动设置为 20、30、40?管他呢?事实上HorizontalAlignment默认为Stretch,所以它拉伸了整列的宽度,设置为20。

标签: wpf height


【解决方案1】:

看起来ContentAlignment 的默认单元格样式是Stretch 对应HorizontalBottom 对应Vertical

从 Framework 4.0 开始,可以添加 CellStyle 属性:

<DataGridTemplateColumn.CellStyle>
    <Style TargetType="{x:Type DataGridCell}">
        <Setter Property="VerticalContentAlignment" Value="Stretch"/>
    </Style>
</DataGridTemplateColumn.CellStyle>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2021-01-19
    • 2016-07-20
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多