2017-02-27 2 views
0

プリズムでビヘイビアを処理する方法は?私は次のコードを持っており、 "enrtyEmail.IsValid"プロパティの処理方法を知りたいですか? ViewModelでEmailValidatorBehaviorのステータスを調べるにはどうすればよいですか?Xamarin.Formsでプリズムの動作を処理する方法

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

答えて

1

動作はBindableObjectであるため、EmailValidatorBehaviorにBindablePropertyを追加するだけで済みます。

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); } 
    } 
} 

、その後、あなたのViewModel

​​

EDITからそのプロパティにバインド:結合BindingModeを設定せずにViewModelにに行動から伝播しないことに注意してください。設定の性質を考慮すると、最も適切なBindingModeはOneWayToSourceになります。これにより、プロパティがViewModelに対してのみ有効に読み取られるようになります。

生憎、IsEmailValidプロパティは私のViewModel.In行動内の状態を変更しない、私はメールが有効であるとき、「GetValueメソッドを返すには、」trueを返していることがわかります

+0

取り組ん例えばhttps://github.com/dansiegel/Validation-With-Prism-Behaviorを参照してください、しかし、私のViewModelでは、IsEmailValidはfalseのままです! – Dimitris

+0

@Dimitris編集を参照してください。 BindingModeを設定するだけです。 –

+0

私は変更を行いましたが、私は同じ結果を得ます。何も変わっていません! – Dimitris

関連する問題