将可见性绑定到DataContext

时间:2014-02-15 00:26:52

标签: xaml windows-phone-8

我有一个将null转换为Visibility.Collapsed的值转换器。现在我尝试在用户控件中使用它,以便当DateContext为null时整个控件将崩溃

控件如下所示:

<UserControl x:Class="PhoneApp.Controls.Header"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Visibility="{Binding Converter={StaticResource ToVisibility}}"
    d:DesignHeight="150" d:DesignWidth="480"> <-- some body here -->

它就像这样使用

<my:Header DataContext="{Binding SectionHeader}"/>

其中SectionHeader是视图模型属性。

我有一个类似的控件,我没有绑定DataContext但是一些自定义DP和折叠在那里工作正常。但是,在这一个中,只有在SectionHeader!= null时才会调用值转换器。如果为null,则使用空子项呈现控件。

我想过不在这里使用DataContext,但控件更清晰。

为什么绑定到DataContext不起作用?你有什么建议?

1 个答案:

答案 0 :(得分:4)

在这种情况下,当DataContext为null时,绑定将使用TargetNullValue属性中指定的值。所以只需设置TargetNullValue=Collapsed,就可以了:

Visibility="{Binding TargetNullValue=Collapsed}"

参考:[How to Set TargetNullValue to Visibility.Collapsed in Binding]