如果底层DataContext为null,如何隐藏控件?

我的视图模型中有一个对象,它有一堆属性,其中一些偶尔会为null。 如果这些特定控件为空,我不想只显示一些控件。 如果绑定为null,我将如何隐藏控件? 我在想某种转换器,但不知道我是怎么做的。 有任何想法吗?

编辑:对不起,我应该提一下,这也将在Silverlight中,所以我不确定Style触发器是否会起作用……?

有一个像这样的转换器,

public sealed class NullToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return value == null ? Visibility.Hidden: Visibility.Visible; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

现在,将属性与Visibility属性绑定。 喜欢,

        

这种方法更容易:

  

当bound属性checkedField为null时,Visibility将设置为Collapsed。

我还需要一个WindowsPhone WinRT应用程序。 我最终使用@PrinceAshitaka的转换器 ,在绑定中进行了一些小修改,如同对类似问题的回答中所建议的那样

您应该使用FallbackValue=Collapsed以避免在datacontext为null时精确显示控件。 不确定为什么TargetNullValue=Collapsed对我不起作用。

 Visibility="{Binding Converter={StaticResource NullToVisibilityConverter}, FallbackValue=Collapsed}" 

您可以使用DataContextChanged事件,当DataContext为null时,您可以将Visbility设置为Collapsed

在这里阅读更多相关信息

在Silverlight中,您可以使用下一个方法 – 添加触发器来控制:

      

需要这个,但是我无法让它在DataGridTemplateColumn中的DataTemplate中工作,所以这是我如何让它工作的例子。