我试图将我的堆栈面板的可见性设置为折叠,如果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>
最佳答案
一种选择是使用一个简单的转换器,该转换器假定Name
是String
,如果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/