我正在尝试使用 Xamarin.Forms 4.6.0.726 中的 MultiTrigger 根据 2 个不同的布尔值设置条目 IsEnabled 属性。我也尝试过上一个稳定的 4.5 版本。
不幸的是,无论' 值设置为什么,该Entry IsEnabled
属性似乎都保持不变(在这种情况下,为真)。Setter
我在下面的代码示例中尝试了两种类型的 BindingCondition。第一个(未注释的)条件绑定到页面上其他两个元素的 IsVisible 属性。和将按预期切换其可见性,但StackLayout
不会改变。Image
Entry IsEnabled
第二段代码直接绑定到 ViewModel 中的值,实现 INotifyPropertyChanged,但在IsEnabled
值不变的情况下具有完全相同的结果。
我的想法已经用完了,我开始怀疑这是否是 Xamarin 和 MultiTriggers 的错误。似乎没有大量的人在网上使用它们,而那些我有我的人在第一组代码中似乎是最常见的方式。
<StackLayout x:Name="ButtonsStack" IsVisible="{Binding Invoice.Editable}">
<!-- Content Here -->
</StackLayout>
<Image x:Name="InvoiceImage" IsVisible="{Binding IsUploadInvoice}" />
<StackLayout Orientation="Horizontal" HorizontalOptions="End">
<Entry Text="{Binding Invoice.TotalAmount}">
<Entry.Triggers>
<MultiTrigger TargetType="Entry">
<MultiTrigger.Conditions>
<BindingCondition Binding="{Binding Source={x:Reference ButtonsStack}, Path=IsVisible}" Value="True"/>
<BindingCondition Binding="{Binding Source={x:Reference InvoiceImage}, Path=IsVisible}" Value="True"/>
<!--<BindingCondition Binding="{Binding Invoice.Editable}" Value="True"/>
<BindingCondition Binding="{Binding IsUploadInvoice}" Value="True"/>-->
</MultiTrigger.Conditions>
<Setter Property="IsEnabled" Value="True"/>
</MultiTrigger>
<Entry.Triggers>
<Entry>
</StackLayout>