【问题标题】:Xamarin binding default value in xamlxaml 中的 Xamarin 绑定默认值
【发布时间】:2017-12-15 06:30:17
【问题描述】:

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

谁能帮帮我? 谢谢。

代码(简化):

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

【问题讨论】:

    标签: android xaml xamarin xamarin.forms


    【解决方案1】:

    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>
    

    Source

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

    【讨论】:

    • 我想你的意思是&lt;Label.Triggers&gt;
    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 2017-12-03
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多