首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有一个Xamarin格式的MultiTrigger,一个按钮,它不能工作

我有一个Xamarin格式的MultiTrigger,一个按钮,它不能工作
EN

Stack Overflow用户
提问于 2019-05-21 05:10:29
回答 1查看 392关注 0票数 0

我的PCL中有一个create-account页面,其中有一个依赖于几个输入字段的按钮。

我只想在字段有正确的输入时启用Create按钮。这是我的标记:

代码语言:javascript
复制
<Button Text="Create Account" Clicked="CreateAccountButton_Clicked" IsEnabled="False">
     <Button.Triggers>
          <MultiTrigger TargetType="Button">
               <MultiTrigger.Conditions>
                    <BindingCondition Binding="{Binding Source={x:Reference EmailValidator}, Path=IsValid}" Value="True" />
                    <BindingCondition Binding="{Binding Source={x:Reference PasswordValidator}, Path=IsValid}" Value="True" />
               </MultiTrigger.Conditions>
               <Setter Property="IsEnabled" Value="True" />
          </MultiTrigger>
     </Button.Triggers>
</Button>

我已经验证了验证器正在将其IsValid属性设置为True,但是该按钮并未启用。我使用的是Android模拟器和Visual Studio 2019。

上面的代码和我在网上找到的几个例子是一样的。

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-04-01 00:00:57

在您的Xaml中:

代码语言:javascript
复制
<ResourceDictionary>
   <local:MultiTriggerConverter x:Key="DataHasBeenEnteredTrigger" />
</ResourceDictionary>

我的例子:

代码语言:javascript
复制
<Button IsEnabled="False" Text="{localization:Translate login}" Margin="25,0" TextColor="{StaticResource color-fourth}" BackgroundColor="Yellow" Opacity="0.5" FontAttributes="Bold" Command="{Binding GoConnexionCommand}" >
                <Button.Triggers>
                    <MultiTrigger TargetType="Button">
                        <MultiTrigger.Conditions>
                            <BindingCondition Binding="{Binding Source={x:Reference user},
                                      Path=Text.Length,
                                      Converter={StaticResource DataHasBeenEnteredTrigger}}"
                                      Value="true" />
                            <BindingCondition Binding="{Binding Source={x:Reference password},
                                      Path=Text.Length, 
                                      Converter={StaticResource DataHasBeenEnteredTrigger}}"
                                      Value="true" />
                </MultiTrigger.Conditions>
            <Setter Property="IsEnabled" Value="True" />
        <Setter Property="Opacity" Value="1" />
    </MultiTrigger>
</Button.Triggers>

转换类:

代码语言:javascript
复制
public class MultiTriggerConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null) return false;

        if ((int)value > 0) return true;            
         else return false;   // Input is empty
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

测试一下,告诉我它是什么样子的!

最佳回归率

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

https://stackoverflow.com/questions/56228226

复制
相关文章

相似问题

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