当DataContext为null时隐藏GroupBox控件

时间:2014-02-02 14:13:26

标签: c# wpf

我有一个GroupBox,我在不同阶段的代码中设置了DataContext。我想在GroupBox为空时隐藏此DataContext。我查看了这个SO thread,但在这种情况下可能不适用。 我有一个成员布尔属性SelectedViewVisible,我尝试在后面的代码中调用Window,但似乎没有调用DataContext设置为null。

我在<Window.Resources>中使用以下转换器并使其在其他控件上成功运行,因此问题不应该与它有关:

<BooleanToVisibilityConverter x:Key="BoolToVis" />

以下是我GroupBox的声明:

<GroupBox ... 
     Visibility="{Binding Path=SelectedViewVisible, Converter={StaticResource BoolToVis}}">

没有Path也不起作用:

Visibility="{Binding SelectedViewVisible, Converter={StaticResource BoolToVis}}"

也许我只是在静态和成员绑定属性之间感到困惑?

2 个答案:

答案 0 :(得分:2)

使用FallbackValue,它是绑定不产生值时使用的值:

 <GroupBox ... 
 Visibility="{Binding Path=SelectedViewVisible, Converter={StaticResource BoolToVis}, FallbackValue=Collapsed}">

答案 1 :(得分:2)

您可以使用DataTrigger并检查DataContext的{x:Null}值来执行此操作:

    <GroupBox Header="Test">
        <GroupBox.Style>
            <Style TargetType="GroupBox">
                <Setter Property="Visibility" Value="Visible"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding}" Value="{x:Null}">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </GroupBox.Style>
    </GroupBox>