请考虑以下简化的控制代码:
<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
,这样它的高度就可以保持控件的高度不变。将控件的高度设置为固定值感觉很不好。