ham*_*aiv 9 xaml binding datatrigger xamarin xamarin.forms
我正在尝试检查Xamarin Forms XAML DataTrigger中的绑定对象值是否为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>
Run Code Online (Sandbox Code Playgroud)
有谁知道这样做的方法?我只在Android上测试了这个.
编辑:我已向xamarin bugzilla提交了错误报告https://bugzilla.xamarin.com/show_bug.cgi?id=57863
lin*_*ory 17
我知道这是一个旧线程,但这是解决方案:
顺便说一句,您不需要Isvisible="True"在 StackLayout 中,因为默认值为 true。
<StackLayout IsVisible="True">
<StackLayout.Triggers>
<DataTrigger TargetType="StackLayout"
Binding="{Binding MyObject, TargetNullValue=''}"
Value="">
<Setter Property="IsVisible" Value="False"></Setter>
</DataTrigger>
</StackLayout.Triggers>
...
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
您可以使用转换器并将其设置为对我有用。让我们尝试下面的代码。
转换器代码
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;
}
}
Run Code Online (Sandbox Code Playgroud)
并与 IsVisible 属性绑定,如下所示:
<StackLayout IsVisible="{Binding Registerclosure.Notes, Converter={Helpers:NullValueBoolConverter}}">
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
不要忘记标题中的以下行
xmlns:Helpers="clr-namespace:MyNameSpace"
| 归档时间: |
|
| 查看次数: |
3912 次 |
| 最近记录: |