考虑以下简化控制代码:
<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
,以使其高度保持控件的高度不变。将控件上的高度设置为固定值感觉不好。
答案 0 :(得分:4)
尝试以下DataTrigger(将宽度设置为0)。
<DataTrigger Binding="{Binding Value}" Value="0">
<Setter Property="Visibility" Value="Hidden" />
<Setter Property="Width" Value="0"/>
</DataTrigger>