2011-05-22 140 views
0

XAML綁定問題

<TextBlock Grid.Column="1" 
        Height="37" 
        Margin="8,17,0,0" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Top" 
        FontSize="20" 
        Text="{Binding Contact.Name, 
            UpdateSourceTrigger=PropertyChanged}" /> 

C#代碼後面XAML

public partial class Conversation : Window 
{ 

    private Friend _Contact; 
    public Friend Contact 
    { 
     get 
     { 
      return _Contact; 
     } 
     set 
     { 
      _Contact = value; 
      OnPropertyChanged ("Contact"); 
     } 
    } 


    #region INotifyPropertyChanged Members 

    public event PropertyChangedEventHandler PropertyChanged; 

    void OnPropertyChanged (string propName) 
    { 
     if (this . PropertyChanged != null) 
      this . PropertyChanged (
       this , new PropertyChangedEventArgs (propName)); 
    } 

    #endregion 


    public Conversation (Friend _Friend) 
    { 
     InitializeComponent (); 

     Contact = _Friend; 
    } 

    . 
    . 
    . 

} 

C#朋友類

public class Friend : Person 
{ 

    . 
    . 
    . 

} 

C# Person類

public class Person : INotifyPropertyChanged 
{  

    private string _Name; 

    public string Name 
    { 
     get 
     { 
      return _Name; 
     } 
     set 
     { 
      _Name = value; 
      OnPropertyChanged ("Name"); 
     } 


    #region INotifyPropertyChanged Members 

     public event PropertyChangedEventHandler PropertyChanged; 

     void OnPropertyChanged (string propName) 
     { 
       if (this . PropertyChanged != null) 
       this . PropertyChanged (this , new PropertyChangedEventArgs (propName)); 
     } 

    #endregion 


    . 
    . 
    . 


} 

我的問題:爲什麼綁定不起作用?

+0

爲什麼? -1? .., 我可以知道嗎 ? – 2011-05-22 21:36:24

+0

因爲你的問題沒有在你身上顯示很多努力,如果綁定不起作用,你至少應該提供產生的綁定錯誤,如果你不知道如何調試綁定,你不應該問爲什麼它會這樣做不工作,但尋找方法[如何做到這一點](http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/debugging-data-bindings-in-a-wpf-or-silverlight -application.aspx)。此外,如果您首先閱讀了[介紹性資料](http://msdn.microsoft.com/zh-cn/library/ms752347.aspx),您仍然無法獲得大量的基礎知識。 – 2011-05-23 09:28:35

回答

4

聯繫人需要是屬性而不是字段。

此外,您需要更改綁定,以便源是窗口類。

+0

你的意思是公衆朋友聯繫{get;組; }?如果「是」,那麼「不工作」 – 2011-05-22 21:34:30

+0

你能解釋什麼是不工作多一點?我剛剛看到你試圖綁定到一個領域,並認爲這是問題所在。 – wangburger 2011-05-22 22:45:32

+0

是的,這是問題.. – 2011-05-23 03:51:05

1

正如wangberger所述,聯繫必須是財產。正如wangberger暗示的,你沒有將綁定目標(TextBlock控件)或其任何祖先(例如窗口)的DataContext設置爲綁定源(在你的情況下是窗口本身)。

此外,請閱讀微軟的有關命名約定的.NET指南。

P.S.如果value!= _name,Setter應該只會引發PropertyChanged;