我试图将我的堆栈面板的可见性设置为折叠,如果value为null,但是DataTriggerBehavior不会更改其可见性值,如果我将其值更改为工作范围以外的其他值,则如下所示:

 <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>

最佳答案

一种选择是使用一个简单的转换器,该转换器假定NameString,如果value为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 NB本地是我在其中创建转换器类的名称空间,它在您的应用中可能有所不同

<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/

10-12 18:10
查看更多