2012-02-28 2 views
0

저는 WPF에 상당히 익숙하지 않아 여기에서 잘못하고있는 것이 확실하지 않습니다. 현재 시간 (Datetime.Now)을 창에 레이블로 표시하고 업데이트하려고합니다. 이 시간은 데이터베이스에서 데이터를로드하는 메소드 (예 : "마지막으로 업데이트 된"아이디어)에서 업데이트하도록 호출됩니다. 이 methoud 내가 가진 윈도우의 클래스 생성자에서WPF의 레이블에 DateTime 업데이트

public class UpdatingTime : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    private DateTime _now; 

    public UpdatingTime() 
    { 
     _now = DateTime.Now; 
    } 

    public DateTime Now 
    { 
     get { return _now; } 
     private set 
     { 
      _now = value; 

      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs("Now")); 
      } 
     } 
    } 

    public void Update() 
    { 
     Now = DateTime.Now; 
    } 
} 

... 사용자가 내가 시간 객체의 다음 클래스가 있습니다. 로그인되면 (스레드에 타이머에 의해 유지) 2 분마다라고 ... 데이터베이스에서 데이터를로드하는 방법에

UpdatingTime updateTime = new UpdatingTime(); 
    lastUpdate.DataContext = updateTime; 

, 나는 내 ...
updateTime.Update(); 

내가 바인딩 내 데이터는 같은 문제를 생각 (생각 업데이트() 메서드를 호출 나는 말했다, 나는 아주 새롭다) . XAML 파일에서 내 레이블
 <Label Name="lastUpdate" Margin="10" Height="auto" Content="{Binding Source updateTime, Path=Now}" 
       Visibility="Hidden" FontSize="20" /> 

는 사용자가 로그인하면 내가 가시로 설정하기 때문에 가시가 숨겨져 있다는 이유는

, 나는 그것을 테스트 한 내가 확신이 아니 ...처럼 보이는 문제. 명확하게 말하면, 백엔드 코드는 파일의 뒷부분에있는 해당 xaml 파일 (예 : Window.xaml, Window.xaml.cs)에 있으므로 참조가 누락되었다고 생각하지 않습니다.

문제는 응용 프로그램을 실행할 때 전혀 표시되지 않는다는 것입니다 (컴파일되고 예외가 발생하지 않음). 나는 누군가 내가 이것에 대해 약간의 빛을 비출 수 있다면 내가 뭘 잘못하고 있는지 잘 모르겠다.

또한 학습에 도움이되는 자료를 언급하고 도움이되는 WPF에 익숙해지면 멋진 일이 될 것입니다. DataContext가 실제로 무엇인지, 그리고 올바르게 사용하고 있는지 확실하지 않습니다.

감사합니다.

답변

3

콘텐츠에 대한 바인딩 문에 구문 오류가 있으며 잘못되었습니다. 은 다음과 같아야합니다

Content="{Binding Now}" 

또는 (동일) :

Content="{Binding Path=Now}" 

'소스'에 대한 필요가 없습니다 (당신이 바인딩의 여러 속성이있는 경우 - 쉼표가 있어야합니다). MVVM: Tutorial from start to finish?

+0

열린 감사 안녕 -

WPF 자원에 대한

는 [WPF]이 사이트에서 검색 가장 많은 표를 얻은 질문은 자원을 요약 한 것입니다! 업데이트하지는 않았지만 지금은 표시됩니다 ... datacontext라는 레이블을 시간으로 설정했기 때문에 'Source'가 필요하지 않습니까? 다시 한번 감사드립니다. – Ryan

+0

'출처'가 필요 없습니다. lastUpdate.DataContext를 설정할 때 코드로 설정합니다. 귀하의 코드가 UI를 업데이트하지 못하게 할 수는 없습니다. 구문을 다시 확인하십시오. 매우 자주 사람들은 Typo를 이벤트를 발생시킬 때 속성의 이름으로 만듭니다 (컴파일러는 속성이 존재하는지 확인하지 않습니다). Update 함수에서 setter를 통해 디버거로 이동하여 이벤트가 발생했는지 확인합니다. 그 이상으로, 나는 무엇을 해야할지 모른다. – Uri

+0

업데이트가되었지만 오타가있었습니다. 다시 한 번 감사드립니다. – Ryan

관련 문제