2017-10-20 1 views
-1

IsEnabled 속성이 해당 데이터 컨텍스트의 읽기 전용 속성에 바인딩되는 확인란이 있습니다. 그러나 그 결과는 항상 예상대로는 아닙니다. 사실, 그 속성은 뷰 모델의 생성자에서 작업 (스레딩)으로 계산됩니다.WPF 속성 값이 바인드 값과 다릅니다

계산 된 값이 어떻게 든 다르지만 스눕을 검사 할 때 확인란의 IsEnabled 속성이 False 및 데이터 컨텍스트로 표시됩니다. 그 속성은 True입니다.

나는 이것이 스레딩 때문이라고 생각하며 스레드 실행을 완료하기 전에 뷰가로드 될 때마다 잘못된 값을 표시합니다.

은 이전에 내가이

IsEnabled="{Binding IsFeatureAvailable, UpdateSourceTrigger=PropertyChanged}" 

를 사용하지만 프레임 워크를 사용하고 변화, 어떤 제안

이없는이 고정 희망 나중에

IsEnabled="{Binding IsFeatureAvailable}" 

바인딩이 사용 버전 4.5.2 및 MVVM 용 Caliburn 마이크로

+3

당신이에서 INotifyPropertyChanged 인터페이스를 구현하고 있습니까? 소스 속성을 어떻게 설정합니까? – mm8

+0

MultiThreading을 사용하고 있다면 Dispatcher를 사용하고 UI 스레드에서 알림을 트리거하십시오. Dispatcher를 통해'OnPropertyChanged'를 호출하지 않았기 때문에 알림이 표시되지 않는 문제가있었습니다. – XAMlMAX

답변

2

t를 구현해야합니다 그는 인터페이스를 INotifyPropertyChanged 그리고 그것은 새로운 값으로 설정되어 때마다 IsFeatureAvailable 속성에 대한 PropertyChanged 이벤트를 발생 :

public class ViewModel : PropertyChangedBase 
{ 
    private _isFeatureAvailable; 
     public bool IsFeatureAvailable 
    { 
     get { return _isFeatureAvailable; } 
     set 
     { 
      _isFeatureAvailable = value; 
      NotifyOfPropertyChange(() => IsFeatureAvailable); 
     } 
    } 
} 
+0

@MegaMind : 문제가 해결되면 답변을 수락하십시오. https://stackoverflow.com/help/someone-answers – mm8

관련 문제