如何隐藏控件以使其不再占用WPF中的空间?

时间:2011-05-30 01:37:40

标签: wpf layout visibility

我有一个DataTemplate,我正用于gridview中的一个单元格。我想在进度条和文本/链接块之间切换。有没有办法隐藏一个元素,以便它从流中删除,并在隐藏时不占用任何空间(如CSS中的“display:none”)?有没有更好的方法来解决这个问题?

DataTemplate看起来像:

<DataTemplate x:Key="DataTemplate2">
    <StackPanel Height="40">
        <TextBlock Visibility="{Binding ButtonVisibility}">
            <Hyperlink Click="btn_Authorise">
                <InlineUIContainer>
                    <TextBlock Text="{Binding Button}" />
                </InlineUIContainer>
            </Hyperlink>
        </TextBlock>
        <ProgressBar Value="{Binding Progress}"
                     Visibility="{Binding ProgressVisibility}"
                     Height="15"
                     Width="150"
                     Background="{DynamicResource NormalBrush}"
                     BorderThickness="0"
                     BorderBrush="#FF8D8D8D"
                     Style="{DynamicResource ProgressBarStyle1}" />
    </StackPanel>
</DataTemplate>

2 个答案:

答案 0 :(得分:12)

Visibility.Collapsed可能就是你所需要的(而不是Visibility.Hidden仍然让控件参与布局计算)

另见Visibility enumeration reference

答案 1 :(得分:0)

是的。

可见性是枚举,可见,隐藏和折叠。 隐藏只是不可见,而倒塌意味着它也没有空间