【问题标题】:Multi Data Trigger In Xamarin FormsXamarin 表单中的多数据触发器
【发布时间】:2018-11-26 14:30:57
【问题描述】:

仅当两个文本字段不为空时,我才尝试允许单击我的按钮。但是,我收到了

的编译错误

找不到类型多数据触发器

以下是我的语法,我应该如何更改它才能按需要执行?

    <?xml version="1.0" encoding="utf-8" ?>  
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"  
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" >
<ContentPage.Content>  
    <StackLayout Orientation="Vertical" Padding="30" Spacing="40">  
        <BoxView HeightRequest="10"/>  
        <Frame BackgroundColor="#BF043055" HasShadow="False">  
            <StackLayout Orientation="Vertical" Spacing="10">  
                <Entry x:Name="Email" Text="{Binding Email}" Placeholder="Email"   
                       PlaceholderColor="Red" HeightRequest="50"   
                       Keyboard="Email" TextColor="Black" />
                <Entry x:Name="Password" Text="{Binding Password}" Placeholder="Password"   
                       PlaceholderColor="Red" HeightRequest="50"   
                       IsPassword="True" TextColor="Black" />  
                </StackLayout>  
        </Frame>  
        <Button x:Name="loginbutton" Command="{Binding SubmitCommand}" Text="Login" TextColor="White"  
                FontAttributes="Bold" FontSize="Large" HorizontalOptions="FillAndExpand"  
                BackgroundColor="#088da5" > 
                <Button.Style>
                  <Style TargetType="{x:Type Button}">
                      <Style.Triggers>
                          <MultiDataTrigger>
                              <MultiDataTrigger.Conditions>
                                 <Condition Binding="{Binding ElementName=Email, Path=Text.Length, Mode=OneWay}" Value="0"/>
                                 <Condition Binding="{Binding ElementName=Password, Path=Text.Length, Mode=OneWay}" Value="0"/>
                              </MultiDataTrigger.Conditions>
                              <Setter Property="IsEnabled" Value="False"/>
                         </MultiDataTrigger>
                     </Style.Triggers>
                  </Style>
                </Button.Style>
        </Button>
    </StackLayout>  
</ContentPage.Content>  
</ContentPage>  

编辑
我将语法编辑为以下内容,但出现以下编译错误:

找不到“ElementName”的属性、可绑定属性或事件,或者值和属性之间的类型不匹配。

            <Button x:Name="loginbutton" Command="{Binding SubmitCommand}" Text="Login" TextColor="White"  
                FontAttributes="Bold" FontSize="Large" HorizontalOptions="FillAndExpand"  
                BackgroundColor="#088da5" > 
                <Button.Style>
                  <Style TargetType="{x:Type Button}">
                      <Style.Triggers>
                          <MultiTrigger TargetType="{x:Type Button}">
                              <MultiDataTrigger.Conditions>
                                 <Condition Binding="{Binding ElementName=Email, Path=Text.Length, Mode=OneWay}" Value="0"/>
                                 <Condition Binding="{Binding ElementName=Password, Path=Text.Length, Mode=OneWay}" Value="0"/>
                              </MultiDataTrigger.Conditions>
                              <Setter Property="IsEnabled" Value="False"/>
                         </MultiTrigger>
                     </Style.Triggers>
                  </Style>
                </Button.Style>
        </Button>

【问题讨论】:

  • MultiDataTrigger 不应该只是MultiTrigger吗?
  • ElementName 更改为Source

标签: xamarin xamarin.forms xamarin.ios


【解决方案1】:

MultiDataTrigger 特定于 WPF。 Xamarin 使用MultiTrigger,它基本上做同样的事情。查看this blog post,了解如何在 Xamarin 表单中实现触发器。

【讨论】:

  • 将其更改为 MultiTrigger 会给我一个编译错误,即使用 MultiTrigger 需要“TargetType”
  • 查看我链接的博客文章,在 Multi Triggers 部分下。您有两个部分,您必须在其中定义TargetType:在Style 之前和Style 的开头。
猜你喜欢
  • 2017-12-03
  • 1970-01-01
  • 2022-11-01
  • 2021-09-27
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 2012-12-18
  • 2021-09-25
相关资源
最近更新 更多