Обязательная проблема - PullRequest
0 голосов
/ 23 мая 2011

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 # Персональный класс

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


    .
    .
    .


}

Мой вопрос: Почему не работает переплет?

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

Контакт должен быть свойством, а не полем.

Также вам нужно изменить привязку, чтобы источником был класс окна.

1 голос
/ 23 мая 2011

Как заявил Вангбергер, контакт должен быть собственностью.

Как и предполагал wangberger, вы не установили DataContext цели привязки (элемент управления TextBlock) или любого из его предков (например, окна) в качестве источника привязки (в вашем случае - самого окна).

Кроме того, ознакомьтесь с рекомендациями Microsoft .NET относительно соглашений об именах.

P.S. Сеттер должен вызывать PropertyChanged только если значение! = _Name;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...