如何检查xamarin表单数据触发器中的对象null值?
问题描述:
我想检查绑定对象的值是否在Xamarin Forms XAML DataTrigger中为空,但我无法让它工作。我试过以下内容:如何检查xamarin表单数据触发器中的对象null值?
<StackLayout IsVisible="True">
<StackLayout.Triggers>
<DataTrigger TargetType="StackLayout"
Binding="{Binding MyObject}"
Value="{x:Null}">
<Setter Property="IsVisible" Value="False"></Setter>
</DataTrigger>
</StackLayout.Triggers>
...
</StackLayout>
有没有人知道一种方法来做到这一点?我只在Android上测试过。
编辑:我已经提交了一份bug报告xamarin的Bugzilla https://bugzilla.xamarin.com/show_bug.cgi?id=57863
答
您可以使用转换,并且设置它的工作对我来说。让我们试试下面的代码。
转换代码
public class NullValueBoolConverter: IValueConverter, IMarkupExtension
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is string)
{
if (string.IsNullOrEmpty(value as string))
{
return false;
}
else
{
return true;
}
}
else
{
if (value == null)
{
return false;
}
else
{
return true;
}
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
public object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
并与IsVisible属性绑定象下面这样:助手=:
<StackLayout IsVisible="{Binding Registerclosure.Notes, Converter={Helpers:NullValueBoolConverter}}">
</StackLayout>
不要在头
的xmlns忘记下面线“clr-namespace:MyNameSpace”
您是否收到任何错误?其他绑定是否可以正常工作,也就是说它确实试图检查null是否是问题? – spaceplane
我没有看到任何错误,是的其他绑定工作正常。 – hamalaiv
我刚刚测试过它,也得到同样的问题......它可能是一个Xamarin错误。一种解决方法是使用实现IValueConverter的Converter? – spaceplane