私はWPFが初めてで、過去数日間、これについて頭を悩ませていました。テキストボックスの基本的なバインディングを文字列プロパティに設定しようとしています。MS のチュートリアルに従いましたが、何も機能していないようです。
これがメールクラスです。件名プロパティをバインドしてテキストボックスに表示しようとしています
public class Email : INotifyPropertyChanged
{
private string _subject;
public string Subject
{
get { return _subject; }
set
{
_subject = value;
OnPropertyChanged("Subject");
}
}
private string _contents;
public string Contents
{
get { return _contents; }
set
{
_contents = value;
OnPropertyChanged("Contents");
}
}
private Category _category;
public Category Category
{
get { return _category; }
set
{
_category = value;
OnPropertyChanged("Category");
}
}
public Email()
{
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(info));
}
}
}
テキストボックスを親にする UserControl 内の電子メールセッターは次のとおりです。
private Email _email;
public Email Email
{
get { return _email; }
set
{
_email = value;
if (_email != null)
{
Binding myBinding = new Binding("Subject");
myBinding.Source = _email;
tbSubject.SetBinding(TextBlock.TextProperty, myBinding);
}
}
}
渡された電子メールが null ではなく、件名がある場合でも、tbSubject は常に空です。私がこれを行うと:
public Email Email
{
get { return _email; }
set
{
_email = value;
if (_email != null)
{
tbSubject.Text = _email.Subject;
}
}
}
それは正常に動作します。私は自分が間違っていることを理解していません。