问答

visual-studio-2015 – 登录页面未以xamarin形式验证

 来源    2018-12-01    0  

我使用xamarin表单创建了登录页面,并通过行为类创建了名为validationbehaviour.cs的类文件和验证的输入字段.

xaml登录页面代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:LoginUser"
             x:Class="LoginUser.MainPage">
  <StackLayout Spacing="20" Padding="50" VerticalOptions="Center">
    <Entry  Placeholder="Username"></Entry>
    <Entry Placeholder="Password" IsPassword="True">
      <Entry.Behaviors>
        <local:PasswordValidationBehavior />
      </Entry.Behaviors>
    </Entry>
    <Button Text="Log In" TextColor="White" BackgroundColor="##ff77D065"></Button>
  </StackLayout>
</ContentPage>

这是我的validationbehaviour.cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using System.Text.RegularExpressions;   

namespace LoginUser
{
    public class ValidationBehavior: Behavior<Entry>
    {
        const string pwRegex = @"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za- z\d$@$!%*#?&]{8,}$";
        protected override void OnAttachedTo(Entry bindable)

        {
            bindable.TextChanged += HandleTextChanged;
            base.OnAttachedTo(bindable);
        }

        private void HandleTextChanged(object sender, TextChangedEventArgs e)
        {
            bool IsValid = false;
            IsValid= (Regex.IsMatch(e.NewTextValue, pwRegex));
            ((Entry)sender).TextColor = IsValid ? Color.Default : Color.Red;
        }

        protected override void OnDetachingFrom(Entry bindable)
        {
            bindable.TextChanged -= HandleTextChanged;
            base.OnDetachingFrom(bindable);
        }

    }
}

因此,当我在Android模拟器中运行该程序时,登录设计工作正常,但验证不起作用.

也许您应该将IsValid变量更改为属性,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using System.Text.RegularExpressions;   

namespace LoginUser
{
    public class ValidationBehavior: Behavior<Entry>
    {
        const string pwRegex = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$";            

        static readonly BindablePropertyKey IsValidPropertyKey = BindableProperty.CreateReadOnly("IsValid", typeof(bool), typeof(ValidationBehavior), false);

        public static readonly BindableProperty IsValidProperty = IsValidPropertyKey.BindableProperty;

        public bool IsValid
        {
            get { return (bool)base.GetValue(IsValidProperty); }
            private set { base.SetValue(IsValidPropertyKey, value); }
        }      

        protected override void OnAttachedTo(Entry bindable)
        {
            bindable.TextChanged += HandleTextChanged;
        }

        private void HandleTextChanged(object sender, TextChangedEventArgs e)
        {
            IsValid= (Regex.IsMatch(e.NewTextValue, pwRegex, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250)));
            ((Entry)sender).TextColor = IsValid ? Color.Default : Color.Red;
        }

        protected override void OnDetachingFrom(Entry bindable)
        {
            bindable.TextChanged -= HandleTextChanged;
        }

    }
}

另一个错误也是您的正则表达式,请尝试以下操作:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,15}$

如果你还想要至少一个特殊字符(这可能是一个好主意),试试这个:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$

使用我的示例,您可以这样:

密码:123456

密码:AbcDe12!

visual-studio – Visual Studio 2015更新3未安装(无错误或反馈)
问答Visual Studio 2015更新3未安装.运行vs2015.3.exe会暂时提取一些文件,然后什么都不做(没有安装启动画面,没有反馈,没有错误,没有任何错误).手动提取文件并运行'SetupL ...
1
visual-studio – “安装程序检测到Visual Studio 2015 Update 3可能未完全安装…”
问答"-Please repair Visual Studio 2015 Update 3, then install this product again." 我得到这个,当我尝试和 ...
1
视觉工作室 – Visual Studio 2015新增文件未被自动添加到源代码控制
问答我刚刚升级到VS2015,我遇到了一个我以前没看过的问题.在源代码控制下使用现有的解决方案,我可以修改文件,并将它们作为挂起的更改准备好登录到TFS. 但是,我添加一个新的文件(Test.cs作为这个 ...
1
visual-studio – 自Visual Studio 2015更新3以来未解析的外部符号:如果析构函数是虚拟的,则提升python链接错误
问答自从我们更新到Visual Studio 2015更新3以来,我们收到了奇怪的未解决的符号链接错误.其他人遇到过同样的问题吗? 真正奇怪的是boost :: get_pointer是一个模板方法,在b ...
Visual Studio工具Git,页面未找到,visual studio 2013.1
问答我在git扩展的vs工具中遇到了一个奇怪的错误,当按下更改时,我得到以下错误: 未找到页面'b38f4abc-2b2c-4e4d-a047-eaaca7514610′. 我在ms上遇到了这个页面: h ...
1
visual-studio-2015 – Visual Studio 2015 Update 1未显示当前的Git分支
问答我有两台计算机,都安装了Visual Studio 2015社区.两个Visual Studio都安装了Update 1 -- 当我将Visual Studio更新为Update 1时,我注意到Vis ...
asp.net-mvc – Visual Studio 2015异步变量未在调试器中显示
问答我有一个.NET Core ASP.NET MVC 6应用程序,我确信它是Visual Studio中的一个错误.如果我在await语句后面放置一个断点,那么该对象不会显示在Locals中,并且我无法 ...
1
无法登录Xamarin帐户Visual Studio 2015 Communitiy
问答使用FRESH安装Visual Studio 2015 Community Edition和免费版Xamarin(使用全新的激活帐户),当我尝试在VS中登录时出现此错误: System.Excepti ...
visual-studio – “Microsoft Azure App Service”目标在单击“发布”时未出现在visual studio 2015中
问答我试图从Microsoft Azure指南运行Xamarin.Android应用程序. 根据指南我应该右键单击Service项目并重建,之后单击Publish我会获得Publish Target窗口, ...
1
c# – XAMINE UWP项目在Visual Studio 2015中创建后未建立
问答我为Visual Studio 2015安装了Xamarin,并创建了Xamarin.Forms Portable项目.之后,我试图建立解决方案. 但是我收到了UWP项目的错误:错误类型Univers ...
2
使用Visual Studio 2015在Xamarin中发布禁用Android应用程序选项
问答在尝试发布我的Android应用程序时,Visual Studio 2015中禁用了选项:Tools-> Android-> Publish Android App,因此我无法签署我的应用 ...
2
visual-studio-2015 – xUnit.net v2在Visual Studio 2015中未发现.NET核心测试
问答我真的很沮丧这个问题.我已经尝试更改版本号,但测试浏览器中没有显示任何测试. 在测试输出窗口中,我可以看到这个输出 Starting Microsoft.Framework.TestHost [C:\ ...
无法创建F#Android项目 – Visual Studio 2015 Xamarin社区
问答我正在按照对话选项在Xamarin下载页面的visual studio社区版本中创建一个新的F #Android Blank Activity,但运气不错. C#安卓项目似乎工作得很好.这是在Xama ...
1
android – 如何在Visual Studio 2015中减少Xamarin Forms应用程序的用户代码大小?
问答我今天在Windows 7上安装了Visual Studio 2015 RTM,并在Xamarin(Starter License)上注册了一个新帐号. 创建项目后: 我试图运行应用程序(AVD之前创 ...
2
在visual studio 2015预览中构建和运行Xamarin iOs应用程序时出错
问答我是Xamarin跨平台开发的新手.我正在使用Visual Studio 2015 Preview进行开发.我为移动应用程序创建了新的解决方案,它对Droid和Windows手机都有效.但在与iOs构 ...
1
调试 – Visual Studio 2015:调试会话未正确终止
问答我最近选择了一个一年前的MVC5 / WebAPI2(和SignalR)应用程序,该应用程序在VS2013下运行得很好. 在VS2015中,我一直在努力解决看似挂起的调试会话:启动调试会话时,VS20 ...
c – Visual Studio 2015中的Qt项目:“未解析的外部符号wWinMain”
问答整个错误输出是: LNK2019 unresolved external symbol wWinMain referenced in function "int __cdecl __scrt ...
1
visual-studio – Visual Studio 2015,未应用已安装的字体
问答我安装了(作为MS recommend)font并尝试将其分配到"选项/环境/字体和颜色"但不起作用. 应用Lucida Console字体: 应用InputMonoCondens ...
Visual Studio 2015 Update 1 xaml设计器未显示UWP
问答在Visual Studio 2015 Update1中,通用Windows应用程序的XAML设计器消失了吗? 它适用于wpf和window 8.1应用程序,并且在Tools-> Option- ...