c# - DataTriggerBehavior 不适用于空值

标签 c# xaml uwp

如果值为 null,我正在尝试将我的堆栈面板的可见性设置为折叠,但 DataTriggerBehavior 不会更改它的可见性值,如果我将值更改为其他值而不是它工作的值,下面是 xaml:

 <Interactivity:Interaction.Behaviors>
     <Core:DataTriggerBehavior Binding="{Binding Name}"
                                 Value="{x:Null}">
     <Core:ChangePropertyAction TargetObject="{Binding ElementName=spName}"
                                 PropertyName="Visibility"
                                 Value="Collapsed" />
                    </Core:DataTriggerBehavior>
 </Interactivity:Interaction.Behaviors>

最佳答案

一个选项是使用一个简单的转换器,它假定 Name 是一个 String 并且如果值为 null 则返回一个空字符串,否则返回该值作为一个 String

public class NullToEmptyStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value == null)            
            return "";            
        else
            return value.ToString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

并且您的 xaml 将引用 NullToEmptyStringConverter 注意 local 是我在其中创建转换器类的命名空间,它在您的应用中可能有所不同

<Page.Resources>
    <local:NullToEmptyStringConverter x:Key="NullToEmptyStringConverter"/>
</Page.Resources>

和您的DataTrigger

<Interactivity:Interaction.Behaviors>
 <Core:DataTriggerBehavior Binding="{Binding Name, Converter={StaticResource NullToEmptyStringConverter}}"
                             Value="">
     <Core:ChangePropertyAction TargetObject="{Binding ElementName=spName}"
                             PropertyName="Visibility"
                             Value="Collapsed" />
 </Core:DataTriggerBehavior>

关于c# - DataTriggerBehavior 不适用于空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342672/

相关文章:

c# - 用文件 C# 填充锯齿状数组

c# - MVVM 会阻止 Visual Studio Designer 显示 xaml 的能力吗?

wpf - XAML 组合样式超越 BasedOn?

c# - 使用 MVVM LIGHT (WPF) 在 UserControl 中导航

javascript - 如何从 WinJS ListView 中删除悬停属性?

c# - 手动配置 OWIN WebApp

c# - 绑定(bind)泛型方法委托(delegate)时出错 - 签名或安全透明度

c# - 有没有办法为 UserPrincipal.FindByIdentity() 启用推荐追踪?

windows - 如何清除 UWP WebView 缓存?

c# - UWP 反射(reflect)通过绑定(bind)从设置中加载的 ComboBox 选定项