ben*_*ton 5 xaml android xamarin xamarin.forms
我默认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}"
Run Code Online (Sandbox Code Playgroud)
对象的默认值IsVisible始终是true。这是独立于Binding. 您可以使用以下内容覆盖代码隐藏文件中的该值:
<Image x:Name="myImage" Aspect="AspectFit" WidthRequest="20"
HeightRequest="20" HorizontalOptions="End" VerticalOptions="End"
IsVisible="{Binding PropertyNameOfYourModel}" />
Run Code Online (Sandbox Code Playgroud)
// 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");
Run Code Online (Sandbox Code Playgroud)
另一种解决方案可能是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>
Run Code Online (Sandbox Code Playgroud)
如果您可以等待Xamarin.Forms 3.2.0FallbackValue ,那么您将可以TargetNullValue直接在 Xamarin Xaml 中使用这些选项。
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |