仅垂直折叠TextBox - 如果隐藏,则获取实际高度

时间:2014-01-03 08:54:05

标签: c# .net wpf

考虑以下简化控制代码:

<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>

我有条件地(此处:值== 0)隐藏TextBox,以便Value显示在下方的TextBlock中。它有效,但如果我使用Collapsed,控件的高度会改变我想要避免的内容。如果我使用Hidden,则隐藏TextBox的宽度会推送网格列1。

我想要的是仅在垂直方向上折叠TextBox,以使其高度保持控件的高度不变。将控件上的高度设置为固定值感觉不好。

1 个答案:

答案 0 :(得分:4)

尝试以下DataTrigger(将宽度设置为0)。

 <DataTrigger Binding="{Binding Value}" Value="0">
    <Setter Property="Visibility" Value="Hidden" />
    <Setter Property="Width" Value="0"/>
 </DataTrigger>