2011-01-23 5 views
2

MVVM을 사용하는 속성에 바인딩 된 combox 컨트롤이 있습니다. 값 변경에 대한 set 메소드에서 수행 유효성 검사가 있습니다 .. 문제는 값이 유효성 검사가 실패하더라도 새로운 값으로 변경지고, 이전의 값을 유지하지 .. 아래 WPF MVVM Combox가 유효성 검사 실패시 이전 값을 유지하지 못함

은 XAML입니다 :

다음은

<ComboBox Grid.Column="1" Grid.Row="1" Width="200" ItemsSource="{Binding Path=Applications, Mode=OneTime}" SelectedItem="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.Application, Mode=TwoWay}" Margin="3"></ComboBox> 
은보기 모델 코드입니다 : 당신은 속성 setter의 마지막 줄에서 OnPropertyChanged를 (...)를 놓치고처럼

private string[] types = new string[] { "A", "B" }; 

private string application; 

public ObservableCollection<string> Applications { get; private set; } 

public Const() { 
     this.Applications = new ObservableCollection<string>(this.types.ToList()); 
    } 

public string Application { 
     get { 
      this.application = this.applicationSpecificRequirements.ContainsKey(Resources.ApplicationKey) ? this.applicationSpecificRequirements[Resources.ApplicationKey] : this.Applications[0]; 
      return this.application; 
     } 

     set { 
      if (this.exchangeViewModel.CheckIfApplicationNameExistsOrIsEmptyAndAssign(this.InstanceName, value)) { 
       System.Windows.Application.Current.Dispatcher.BeginInvoke(
        new Action(() => { 
         this.applicationSpecificRequirements[Resources.ApplicationKey] = this.application; 
         ((IHaveOnPropertyChangedMethod) this).OnPropertyChanged("Application"); 
        }), DispatcherPriority.ContextIdle, null); 

       return; 
      } 

      this.applicationSpecificRequirements[Resources.ApplicationKey] = value; 
     } 
    } 

답변

0

보인다.

+0

시도했지만 dint 작업, 문제는 유효성 검사가 실패하면 if 문 안에 들어가서 값을 설정하는 것입니다. 하지만 같은 UI에서 반영되지 않습니다 .. 만약 유효성 검사가없는 경우 동일한 작품, 그때 값이 chnaged지고 .. 여기에 내가 유효성 검사에 실패하면 이전 값을 유지해야합니다. – Arihant

관련 문제