我有一个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}}"
也许我只是在静态和成员绑定属性之间感到困惑?
答案 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>