当条目不是数字时想要禁用 .net Maui 中的按钮

问题描述 投票:0回答:1

我试图有两个数字条目(如果它们是数字)启用按钮。如果没有启用该按钮。我创建了一个示例应用程序来测试这一点。

到目前为止,我尝试创建了一个类,该类检查它是否是双精度型,如果是双精度型,则将文本更改为绿色,如果不是双精度型,则将文本更改为红色。这样可行。我在按钮中尝试了多重触发条件。我的想法是检查输入文本颜色是红色还是绿色来控制按钮。我将我的代码放在下面。

public class NumericValidationTriggerAction : TriggerAction<Entry>
{
    
    protected override void Invoke (Entry entry)
    {
        double result;
        bool isValid = Double.TryParse(entry.Text, out result);
        entry.TextColor = isValid ? Colors.Black : Colors.Red;
       
    }
}

<StackLayout>
    <Label FontSize="20"
           Text="EventTrigger Example"/>

    <Label Text="Text must be a valid double or it will turn red"/>
    <Entry x:Name="email" 
        Placeholder="Enter a System.Double"
           >
        <Entry.Triggers>
            <EventTrigger Event="TextChanged">
                <local:NumericValidationTriggerAction/>
            </EventTrigger>
        </Entry.Triggers>
    </Entry>

    <Button
        Text="Save"
        IsEnabled="False">
        <Button.Triggers>
            <MultiTrigger TargetType="Button">
                <MultiTrigger.Conditions>
                    <BindingCondition Binding="{Binding Source={x:Reference email}, Path=Double.TryParse.email}" Value="Green"/>
                </MultiTrigger.Conditions>
            </MultiTrigger>
        </Button.Triggers>
    </Button>
</StackLayout>
.net maui
1个回答
0
投票

您没有使用[模型-视图-视图模型],这就是它复杂的原因。

想想这个:

<Entry x:Name="email" TextChanged="email_TextChanged" Placeholder="Enter a System.Double" />

在后面的代码中您可以访问其他控件:

private void email_TextChanged(object sender, TextChangedEventArgs e)
{
    //Your Actions here
    double result;
    bool isValid = Double.TryParse(email.Text, out result);
    email.TextColor = isValid ? Colors.Black : Colors.Red;

    //Set name to your button in Xaml to access it here
    MyButton.IsEnabled = isValid;
}
© www.soinside.com 2019 - 2024. All rights reserved.