2014-03-05 81 views
0

我試圖在窗口加載後顯示查詢檢索到的記錄數。下面是我在我的XAML:在加載時將文本塊文本綁定到屬性

<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#:

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)); 
    } 

然後我添加此得到的記錄數,當我調試我看到變量持有的數量和一切但當窗口啓動時窗口中不顯示任何內容:

numOfrecords = OpenTradesQuery.Count(); 

我缺少什麼?

回答

2

需要提升PropertyChanged事件以通知GUI更新

聲明int類型的財產,WPF將自動調用ToString()您的財產,您不必擔心。

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

設置屬性:

Numrecords = penTradesQuery.Count(); 

你可以在窗口的構造InitializeComponent()後,後面在代碼中設置DataContext /用戶控件:

DataContext = this; 

另外,還可以將其設置在像這樣的根級別的XAML中:

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

它不工作,我在網上查找人們使用datacontext某處我需要補充說明嗎?這是後面的代碼如何添加這個datacontext @Rohit Vats – kknaguib

+0

我希望你已經有'DataContext'設置。我已經更新了答案,以包括這一點。 –

+0

好吧,現在我寫了一些文字,但是數字沒有更新它是0 @Rohit Vats – kknaguib

相關問題