仅垂直折叠文本框 - 或获取其隐藏时的实际高度

3

请考虑以下简化的控制代码:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>

  <TextBlock Text="xxx" Grid.Column="1" VerticalAlignment="Center">
  </TextBlock>

  <TextBlock Text="{Binding Value}" VerticalAlignment="Center">
  </TextBlock>

  <TextBox Text="{Binding Value}" VerticalAlignment="Center">
    <TextBox.Style>
      <Style TargetType="TextBox">
        <Style.Triggers>
          <DataTrigger Binding="{Binding Value}" Value="0">
            <Setter Property="Visibility" Value="Collapsed" />
          </DataTrigger>
        </Style.Triggers>
      </Style>
    </TextBox.Style>
  </TextBox>
</Grid>

我有条件地(这里指Value==0)隐藏TextBox,以便在下面的TextBlock中显示Value。它有效,但如果我使用Collapsed,控件的高度会改变,而这正是我想要避免的。如果我使用Hidden,则隐藏的TextBox的宽度会推动网格的第一列。

我想要的是只在垂直方向上折叠TextBox,这样它的高度就可以保持控件的高度不变。将控件的高度设置为固定值感觉很不好。

1个回答

4
尝试使用以下DataTrigger(将宽度设置为0)。
 <DataTrigger Binding="{Binding Value}" Value="0">
    <Setter Property="Visibility" Value="Hidden" />
    <Setter Property="Width" Value="0"/>
 </DataTrigger>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接