2010-01-30 5 views
5

내 WPF 응용 프로그램에는 사용자에게 표시하려는 부울 속성이 있습니다 (예 : 읽기 전용 확인란). 일반적으로 WPF가 그에 따라 동작하고 그에 따라 확인란을 변경할 수 있도록 INotifyPropertyChanged를 구현합니다.WPF : INotifyPropertyChanged 인터페이스를 구현하지 않고 속성 변경 표시

지금 당장 가지고있는 문제는이 속성 값이 닫힌 프레임 워크에서 검색된다는 것입니다. 즉, 값을 폴링 할 수는 있지만 구독 할 수있는 변경 이벤트는 없습니다.

첫 번째 생각은 주기적으로 (10 밀리 초마다) 값을 폴링하고 값이 변경되면 이벤트를 생성하는 별도의 스레드를 만드는 것이 었습니다. 그러나 그것은 나에게 잔인한 것처럼 보인다.

내 질문은 : WPF에서 INotifyPropertyChanged가 옵션이 아닌 값을 변경하는 기능이 있습니까? 어떤 종류의 여론 조사 메커니즘인가? 그렇지 않다면이 문제를 어떻게 해결할 것입니까?

감사합니다.

+0

나는 그것이 가능하다고 생각하지 않는다. 나는 대답한다. –

답변

4

을 :(. 그것은 닫힌 프레임 워크입니다으로

public class ClosedSourceObjectViewModel : ViewModelBase 
{ 
    private ClosedSourceObject ClosedSourceObject 
    { 
     get; 
     set; 
    } 

    public bool SomeProperty 
    { 
     get { return this.ClosedSourceObject.SomeProperty; } 
     set 
     { 
      if (value != this.ClosedSourceObject.SomeProperty) 
      { 
       RaisePropertyChanging("SomeProperty"); 
       this.ClosedSourceObject.SomeProperty = value; 
       RaisePropertyChanged("SomeProperty"); 
      } 
     } 
    } 
} 
+0

많은 등록 정보가있는 경우 전체 래퍼 클래스를 생성하여 시간을 절약 할 수도 있습니다. – smaclell

+3

실제로'ViewModelBase'에는'INotifyPropertyChanging'과'INotifyPropertyChanged' 구현물이 있습니다. – user7116

+0

게시물 주셔서 감사합니다! 그건 사실 나쁜 소식입니다. :-( 나는 당신의 접근 방식에 문제가있다. 나의 가치는 나에 의해서가 아니라 닫힌 프레임 워크 내에서 변경된다는 것이다. 전혀 변경할 수는 없다. –

0

@Alastair에 동의합니다. 따라서

(1) 속성 변경에 대해 사용자에게 알리지 않는 닫힌 프레임 워크에서 값을 검색하려고합니다.
(2) 값을 폴링 할 수는 있지만 그렇게하고 싶지는 않습니다! 어딘가에 문제의 개체에 대한 "뷰 모델"을 생성, 제어하고 자신의 것을 처리 할 수에서 값이 오면 나는이 일을 어떤 다른 방법이있을 거라고 생각하지 않습니다

+0

왜 폴링을 낙담하는 것을 게시 충분히 잘 모르겠어요? 속성은 돈 읽기 전용이며 변경 ' 즉시 반영해야 할 필요가 있습니다. 잠시만 기다려도됩니다. –

+0

@Max : 나는 낙담 한 투표로 보지 않습니다. 그는 polli 없이는 동의합니다. 응, 불가능 해. 그것을하는 유일한 방법은 폴링입니다. –

+0

OK, 시간 내 주셔서 감사합니다. :-) 그 다음 폴링은 ... –

관련 문제