バインディングを理解するのに本当に苦労しています。これとほぼ同じタイトルのスレッドが他にもたくさんあることは知っていますが、それらはすべて私よりも複雑なことをしようとしており、すべての答えは私が得られないものの山全体を想定しています: (
動的に更新されるメッセージ ログを表示しようとしています。Message クラスを定義しました。
public class Message
{
public DateTime Timestamp { get; private set; }
public string Value { get; private set; }
public int Severity { get; private set; }
public Message(string value, int severity)
{
Timestamp = DateTime.Now;
Value = value;
Severity = severity;
}
}
MessageLog クラスを単純に次のように定義しました。
public class MessageLog: ObservableCollection<Message>
{
public MessageLog(): base()
{ }
}
私の MainWindow コンストラクターには、 Log プロパティがあります。
public MessageLog Log { get; private set; }
MainWindow コンストラクターで、Log を初期化します。
public MainWindow()
{
InitializeComponent();
DataContext = this;
Log = new Model.MessageLog();
// and so on
}
メイン ウィンドウの XAML には次のものがあります。
<ListBox Name="MessagePanel" Height="100" ItemsSource="{Binding MessageLog}" IsEnabled="False"/>
ここで、Message インスタンスを MessageLog に追加すると、それらが ListBox に表示されることを期待していました。彼らはしません。私は何を逃したのですか?
事前に感謝します(そして、バインディングを明確に説明している場所、特にXAMLがコードとそれを探すことができる場所についてのビューを教えていただければ、さらに多くの感謝を込めて。現時点ではマシューを使用しています。 McDonald の「Pro WPF 4.5 in C#」ですが、私にはわかりません。)