C# NullToVisibilityConverter如果不为null,则使其可见
要在listview中隐藏和显示SelectedItem的属性网格吗C# NullToVisibilityConverter如果不为null,则使其可见,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,要在listview中隐藏和显示SelectedItem的属性网格吗 <UserControl xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" <ListView> <!--here is list view--> </ListView> <xctk:PropertyGrid SelectedObject="{Binding Acti
<UserControl xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
<ListView>
<!--here is list view-->
</ListView>
<xctk:PropertyGrid SelectedObject="{Binding Active}" Visibility="{Binding Active, Converter=NullToVisibilityConverter}" >
</xctk:PropertyGrid>
</UserControl>
然后在XAML资源中引用NullVisibilityConverter
<StackPanel.Resources>
<simpleXamlContent:NullVisibilityConverter x:Key="NullToVisibilityConverter"/>
</StackPanel.Resources>
要使用转换器,我们可以在资源中创建一个转换器,并在binding语句中将其作为静态资源引用
<UserControl xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit">
<UserControl.Resources>
<yournamespace:NullVisibilityConverter x:Key="NullToVisibilityConverter"/>
</UserControl.Resources>
<ListView>
<!--here is list view-->
</ListView>
<xctk:PropertyGrid SelectedObject="{Binding Active}" Visibility="{Binding Active, Converter={StaticResource NullToVisibilityConverter}}" >
</xctk:PropertyGrid>
</UserControl>
没有更有用的版本允许设置默认不可见性值:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string defaultInvisibility = parameter as string;
Visibility invisibility = (defaultInvisibility != null) ?
(Visibility)Enum.Parse(typeof(Visibility), defaultInvisibility)
: Visibility.Collapsed;
return value == null ? invisibility : Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return DependencyProperty.UnsetValue;
}
在资源中添加以下内容:
<converters:NullReferenceToVisibilityConverter x:Key="NullToVis" />
像这样使用它:
<StackPanel Visibility="{Binding MyObject, Converter={StaticResource NullToVis}}">
<StackPanel Visibility="{Binding MyObject, Converter={StaticResource NullToVis}, ConverterParameter=Hidden}">
如何在我的xaml中使用它?感谢您展示了如何实现NullToVisibilityConverter,这可能是我的重复。我有一个DataGrid,它有一个刷新按钮,但只有在某些情况下。将按钮的图像源设置为null隐藏了图像,但保留了鼠标悬停时可见的按钮。我在按钮的可见性属性上使用了这个转换器,它工作得非常好。非常感谢。
<converters:NullReferenceToVisibilityConverter x:Key="NullToVis" />
<StackPanel Visibility="{Binding MyObject, Converter={StaticResource NullToVis}}">
<StackPanel Visibility="{Binding MyObject, Converter={StaticResource NullToVis}, ConverterParameter=Hidden}">