2016-12-08 1 views
0

C私は、ビュー内の二つのアイテムを持っているユーザーのために、それらを使用して(私は、実際のプロジェクトでより多くを持っている)#たとえば XAML 1時間に/無効にし、検証テキストアイテムを有効にする方法MVVM、DevExpress社のWPFを使用して

いくつかの検索パラメタを入力して、それらを検証する必要があります。また、最初のフィールドに何かが書かれている場合は、別のものを無効にしてください。

私は、私は価値のな長さをdetermするために検証を使用して、私が入力したテキストのな長さが必要な長さに

ビュー XAML満たしていない場合でも、有効/無効に必要なもの

<dxe:TextEdit 

    Text="{Binding SearchField1, UpdateSourceTrigger=PropertyChanged}" 
    Validate="searchFieldValidate"/> 

<dxe:TextEdit 
     IsEnabled="{Binding IsTextItemEnabled}" 
     Text="{Binding SearchField2, UpdateSourceTrigger=PropertyChanged}" 
     Validate="searchFieldValidate"/> 

C#の

private void searchFieldValidate(object sender, DevExpress.Xpf.Editors.ValidationEventArgs e) 
     { 
      if (e.Value == null) return; 
      if (e.Value.ToString().Length > 5) return; 
      e.IsValid = false; 
      e.ErrorType = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning; 
      e.ErrorContent = "Enter more than 5 symbol"; 
     } 

のViewModel ここで私は依存IsTextItemEnabledを設定する問題は、フィールドな長さが5つのシンボル

に達しないまでRaisePropertiesChangedが動作しないということである値が空またはMOT

public string SearchField1 
     { 
      get { return _searchField1; } 
      set 
      { 
       if (value != _searchField1) 
       { 
        _searchField1 = value; 

        if (!String.IsNullOrEmpty(value)) 
         IsTextItemEnabled = false; 
        else 
         IsTextItemEnabled = true; 

        RaisePropertiesChanged("SearchField1"); 
       } 
      } 
     } 

であるあなたは、この問題を解決するために私を助けてもらえ?まず第一には、私は1つのフィールドを無効にしようとしていますので、私は1 BOOLがIsTextEnabled使用..何をopositeバリアントについて...

答えて

0

が、私はテキストエディット

<dxe:TextEdit 
Name="txtEdit1" 
Text="{Binding SearchField1, UpdateSourceTrigger=PropertyChanged}" 
Validate="searchFieldValidate"/> 

<dxe:TextEdit 
Name="txtEdit2" 
Text="{Binding SearchField2, UpdateSourceTrigger=PropertyChanged}" /> 

に名前を与えたと手順を検証するための行を追加します。

txtEdit2.IsEnabled = String.IsNullOrEmpty(e.Value?.ToString()); 

だから今、私は一度に検証し、有効/無効にできるよ...この時間をOnPropertiesChanged使用しないでください

関連する問題