Xamarin绑定xaml中的默认值

时间:2017-07-11 09:21:00

标签: android xaml xamarin xamarin.forms

默认情况下,IsVisible我会在Xaml中设置对象的false属性。但是当我打开页面时,它是可见的,然后评估绑定变量,如果它是false,则变为不可见。 我希望它默认不可见,如果绑定变量为true,它应该变得可见。 我试图在我的对象的IsVisible属性的绑定中插入一个默认值。我已尝试过FallbackValue = HiddenFallbackValue = Collapsed以及更多内容,即使是TargetNullValue,但它不起作用。我总是获得XamlParseException

有人能帮帮我吗? 感谢。

代码(简化):

 <Grid HorizontalOptions="FillAndExpand"
       IsVisible="{Binding Path=Info.IsVisible, Converter={StaticResource BooleanToStringConverter}, FallbackValue=Collapsed}"

1 个答案:

答案 0 :(得分:0)

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">
    <ContentView.Triggers>
        <DataTrigger TargetType="Label" Binding="{Binding MyObject.Text, Converter={StaticResource NotEmptyToBoolConverter}}" Value="True">
            <Setter Property="IsVisible" Value="True" />
        </DataTrigger>
    </ContentView.Triggers>
</Label>

Source

如果您可以等待Xamarin.Forms 3.2.0,则可以直接在Xamarin Xaml中使用选项FallbackValueTargetNullValue