如果值为 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/