2011-01-18 48 views
2

我希望能夠看到在單擊按鈕時增加的文本塊中的計數器值。我需要將它綁定到文本塊。我想知道什麼是正確的做法。如何將計數器值綁定到文本塊?

XAML:

<TextBlock Text="{Binding Path=counter}" /> 
<Button x:Name="Nextbt" Content="Next" Click="ClickNextButton"/> 

C#:

private void ClickNextButton(object sender, System.Windows.RoutedEventArgs e){ 
counter += 1; 
if (counter == 1) 
{ 

} 
if (counter == 2) 
{ 

}} 

預先感謝您。

+0

目前的方法有什麼問題? – 2011-01-18 22:47:01

+0

它不起作用。 – vladc77 2011-01-18 23:33:30

回答

3

1)製作一個公共財產,返回計數器值。將它命名爲 「計數器」
2)實施INotifyPropertyChanged和調用的PropertyChanged(新PropertyChangedEventArgs( 「計數器」))爲計數器值
3)的每一個變化而改變你的標記如下:

<TextBlock Text="{Binding Path=counter,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}" /> 

這只是許多人的一種可能性。 This鏈接引導您瞭解DataBinding的概述。我可以想象這份文件將澄清上述步驟。

更新

正如您在您的評論希望,這裏的例子中,我假設你在主窗口。我根據上面的順序改變了一些東西:我在構造函數中設置了DataContext。因此沒有必要爲綁定使用相對源。兩種方式都是可能的(兩者都不是很優雅,但要學習WPF數據綁定,它們是合適的)。也許你會同時嘗試,唯一的區別是綁定聲明和構造函數代碼。

public partial class MainWindow : Window , INotifyPropertyChanged{  

     public event PropertyChangedEventHandler PropertyChanged; 
     int m_counter; 

     public MainWindow() { 
      InitializeComponent(); 
      DataContext=this; 
     } 


     public int Counter { 
      get { return m_counter; } 
      set { 
       if (m_counter != value) { 
        m_counter = value; 
        OnPropertyChanged(new PropertyChangedEventArgs("Counter")); 
       } 
      } 
     } 
     protected virtual void OnPropertyChanged(PropertyChangedEventArgs e) {  
      if (null != PropertyChanged) {   
       PropertyChanged(this,e);  
      } 
     } 

     private void ClickNextButton(object sender, System.Windows.RoutedEventArgs e){ 
      Counter += 1; 
      if (Counter == 1) { } 
      if (Counter == 2) { } 
     } 

     Continue with class declaration... 

而XAML:

 <TextBlock Text="{Binding Path=Counter}" /> 
     <Button x:Name="Nextbt" Content="Next" Click="ClickNextButton"/> 
+0

謝謝領先。我想知道你是否可以發佈任何工作示例。我還無法使它工作。再次感謝你。 – vladc77 2011-01-18 22:59:22

1

Counter需要公開爲公共財產,以便爲您的TextBlock綁定到它。優選地,財產應該實施改變通知。首先請參閱MSDN's Data Binding overview