默认情况下,IsVisible
我会在Xaml
中设置对象的false
属性。但是当我打开页面时,它是可见的,然后评估绑定变量,如果它是false
,则变为不可见。
我希望它默认不可见,如果绑定变量为true,它应该变得可见。
我试图在我的对象的IsVisible
属性的绑定中插入一个默认值。我已尝试过FallbackValue = Hidden
或FallbackValue = Collapsed
以及更多内容,即使是TargetNullValue
,但它不起作用。我总是获得XamlParseException
。
有人能帮帮我吗? 感谢。
代码(简化):
<Grid HorizontalOptions="FillAndExpand"
IsVisible="{Binding Path=Info.IsVisible, Converter={StaticResource BooleanToStringConverter}, FallbackValue=Collapsed}"
答案 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>
如果您可以等待Xamarin.Forms 3.2.0,则可以直接在Xamarin Xaml中使用选项FallbackValue
和TargetNullValue
。