2014-03-05 2 views
0

창이로드 된 후 쿼리에서 검색 한 레코드 수를 표시하려고합니다. 여기에 내 XAML에있는 내용은 다음과 같습니다 그런로드시 속성에 텍스트 블록 텍스트 바인딩

private int numOfrecords = 0; 
public event PropertyChangedEventHandler PropertyChanged; 

    public string Numrecords 
    { 
     get { return Convert.ToString(numOfrecords); } 
     set 
     { 
      OnPropertyChanged("NumOfrecords"); 
     } 
    } 

    protected virtual void OnPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 

내가 레코드 수를 얻기 위해이 추가 내가 디버깅 할 때 나는 변수 수와 모든 것을 보유하고 있음을 참조하십시오

<TextBlock Name="numRecordsAnalyzed_TAtab" TextWrapping="Wrap" Margin="12,0,0,4" Grid.RowSpan="2"> 
         <Run Text="Records Found: " Foreground="{StaticResource Foreground}" FontSize="12"/> 
         <Run Text="{Binding Numrecords}" Foreground="Red" FontSize="12"/> 
    </TextBlock> 

여기 내 C#의 창을 시작할 때 창에 아무 것도 표시되지 않습니다.

numOfrecords = OpenTradesQuery.Count(); 

무엇이 없습니까?

답변

2

을 업데이트하기 위해 GUI에 알리기 위해 PropertyChanged 이벤트를 발생시켜야합니다.

int 속성을 선언하면 WPF가 자동으로 ToString()을 호출하므로 걱정할 필요가 없습니다. 또한

DataContext = this; 

, 당신은 그것을 설정할 수 있습니다

Numrecords = penTradesQuery.Count(); 

당신은/UserControl을 윈도우의 생성자에서 뒤에 InitializeComponent() 후 코드 DataContext을 설정할 수 있습니다

public int Numrecords 
{ 
    get { return numOfrecords; } 
    set 
    { 
     if(numOfrecords != value) 
     { 
      numOfrecords = value; 
      OnPropertyChanged("Numrecords"); 
     } 
    } 
} 

는 속성을 설정 다음과 같은 루트 수준의 XAML :

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"/> 
+0

아직 작동하지 않습니다. 사람들이 datacontext를 사용하여 어딘가에 추가해야합니까? 이 코드 뒤에 어떻게 datacontext 추가 @ Rohit Vats – kknaguib

+0

나는 당신이 이미'DataContext'를 갖기를 바랐다. 나는 그것을 포함하도록 답을 업데이트했다. –

+0

자, 이제 제가 글을 쓰고 있지만 번호가 0이 아니 었습니다. @Rohit Vats – kknaguib

관련 문제