Xamarin中XAML数据绑定的默认值

7
我想在Xaml中将一个对象的IsVisible属性默认设置为false。但是,当我打开页面时,它是可见的,然后绑定变量被评估,如果它是false,则变得不可见。我希望它默认情况下不可见,如果绑定变量为true,则应该变成可见。
我已经尝试为我的对象的IsVisible属性插入一个默认值。我尝试了FallbackValue = HiddenFallbackValue = Collapsed等等,甚至对于TargetNullValue,但是它不起作用。我总是得到一个XamlParseException
有人能帮帮我吗?谢谢。
代码(简化版):
 <Grid HorizontalOptions="FillAndExpand"
       IsVisible="{Binding Path=Info.IsVisible, Converter={StaticResource BooleanToStringConverter}, FallbackValue=Collapsed}"
1个回答

4
您的对象的IsVisible的默认值始终为true。这与Binding无关。您可以使用以下代码在后台文件中覆盖此值:
<Image x:Name="myImage" Aspect="AspectFit" WidthRequest="20" 
       HeightRequest="20" HorizontalOptions="End" VerticalOptions="End" 
       IsVisible="{Binding PropertyNameOfYourModel}" />

// Somewhere in the constructor
this.myImage.IsVisible = false;

// Here the binding is set at a later time
this.BindingContext = yourModelObject;
this.myImage.SetBinding(Image.IsVisibleProperty, "PropertyNameOfYourModel");

另一种解决方案可能是使用DataTrigger,但我还没有测试过:

<Label Text="{Binding MyObject.Text}" IsVisible="false">
    <Label.Triggers>
        <DataTrigger TargetType="Label" Binding="{Binding MyObject.Text, Converter={StaticResource NotEmptyToBoolConverter}}" Value="True">
            <Setter Property="IsVisible" Value="True" />
        </DataTrigger>
    </Label.Triggers>
</Label>

源代码

如果你可以等待Xamarin.Forms 3.2.0,那么你将直接在Xamarin Xaml中使用FallbackValueTargetNullValue选项。


1
我认为你的意思是<Label.Triggers> - astralmaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接