【问题标题】:Binding Visibility to DataContext将可见性绑定到 DataContext
【发布时间】:2014-02-15 00:26:51
【问题描述】:

我有一个将 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 不起作用?你有什么建议?

【问题讨论】:

    标签: xaml windows-phone-8


    【解决方案1】:

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

    Visibility="{Binding TargetNullValue=Collapsed}"
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 2014-06-17
      • 2017-12-10
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      相关资源
      最近更新 更多