2017-02-27 30 views
0

如何使用棱镜处理行为?我有以下代码,我想知道如何处理“enrtyEmail.IsValid”属性?如何在ViewModel中找到EmailValidatorBehavior的状态?如何使用Xamarin处理棱镜中的行为表格

<Entry x:Name="entryEmail"> 
    <Entry.Behaviors> 
    <local:EmailValidatorBehavior /> 
    </Entry.Behaviors> 
</Entry>  

回答

1

行为是BindableObject,所以你可以简单地添加一个BindableProperty您EmailValidatorBehavior。

public class EmailValidatorBehavior : BehaviorBase<Entry> 
{ 
    public static readonly BindableProperty IsEmailValidProperty = 
     BindableProperty.Create(nameof(IsEmailValid), typeof(bool), typeof(EmailValidatorBehavior), false, BindingMode.OneWayToSource); 

    public bool IsEmailValid 
    { 
     get { return (bool)GetValue(IsEmailValidProperty); } 
     set { SetValue(IsEmailValidProperty, value); } 
    } 
} 

,然后绑定到该属性从您的视图模型

​​

编辑:请注意,没有设定BindingMode的结合将不会从行为到视图模型传播。考虑到设置的性质,最合适的BindingMode将是OneWayToSource,因为这使得该属性只能有效地读取ViewModel。

看到https://github.com/dansiegel/Validation-With-Prism-Behavior的工作示例

+0

可惜的是,在IsEmailValid属性不会更改在我的ViewModel.In的行为状态,我可以看到,“回归的GetValue”当电子邮件是有效的返回true,但在我的ViewModel中,IsEmailValid保持为false! – Dimitris

+0

@Dimitris查看编辑。你只需要设置BindingMode。 –

+0

我做了更改,但得到了同样的结果。没有改变! – Dimitris