首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin表格IsEnabled MultiTrigger在入境时不起作用

Xamarin表格IsEnabled MultiTrigger在入境时不起作用
EN

Stack Overflow用户
提问于 2020-05-11 13:14:20
回答 1查看 877关注 0票数 1

我试图使用IsEnabled 4.6.0.726中的MultiTrigger来根据两个不同的布尔值来设置条目Xamarin.Forms属性。我也尝试过在上一个稳定的4.5版本。

不幸的是,无论Entry IsEnabled的值设置为什么,Setter属性似乎都保持不变(在本例中,为true)。

我在下面的代码示例中尝试了这两种类型的BindingCondition。第一个(未注释)条件绑定到页面上其他两个元素的IsVisible属性。StackLayoutImage将按预期切换它们的可见性,但是Entry IsEnabled不会改变。

第二个代码片段直接绑定到ViewModel中的值,实现INotifyPropertyChanged,但IsEnabled值不变的结果完全相同。

我的想法已经用完了,我开始怀疑这是否是Xamarin和MultiTriggers的一个bug。似乎没有太多的人在网上使用它们,而那些使用它们的人--我的那些人--似乎是第一组代码中最常见的方式。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-12 01:47:43

正如zafar所说,在默认情况下,需要设置Entry IsEnable="False“,当所有条件都为真时,设置器使条目的IsEnabled属性变为真。

代码语言:javascript
复制
<StackLayout>
            <Entry IsEnabled="False" 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" />

                        </MultiTrigger.Conditions>
                        <Setter Property="IsEnabled" Value="True" />
                    </MultiTrigger>
                </Entry.Triggers>
            </Entry>
        </StackLayout>

关于多个触发器,请看一下:

https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/triggers

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61730602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档