数据绑定不起作用

本文关键字:不起作用 数据绑定 | 更新日期: 2023-09-27 18:36:33

我想知道常见代码中出了什么问题。在这里:

namespace Morse_Mail{
public partial class MainWindow : Window
{
    public ObservableCollection<Message> Messages { get; set; }

    public MainWindow()
    {
        Messages = new ObservableCollection<Message>();
        InitializeComponent();
    }

    // some code here

}
public class Message : INotifyPropertyChanged
{
    private string subject;
    private string date;
    private string sender;
    private string id;
    public string Subject
    {
        get { return subject; }
        set { subject = value; OnPropertyChanged("Subject"); }
    }
    public string Date
    {
        get { return date; }
        set { date = value; OnPropertyChanged("Date"); }
    }
    public string Sender
    {
        get { return sender; }
        set { sender = value; OnPropertyChanged("Sender"); }
    }
    public string ID { get; set; }
    public Message(string _Subject, string _Date, string _Sender, string _ID) 
    {
        Subject = _Subject;
        Date = _Date;
        Sender = _Sender;
        ID = _ID;
    }
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}}

我想将列表视图内容绑定到消息观察器集合。这是我的 xaml 代码:

<Window x:Class="Morse_Mail.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="864.5" Width="1203.5" ResizeMode="NoResize" Title="Morse Mail" WindowStartupLocation="CenterScreen">
<Grid Height="830" VerticalAlignment="Top">
    <ListView x:Name="ListView" HorizontalAlignment="Left" Height="704" Margin="47,39,0,0" VerticalAlignment="Top" Width="600" IsSynchronizedWithCurrentItem="True"
              ItemsSource="{Binding Messages}">
        <ListView.View >
            <GridView AllowsColumnReorder="true">
                <GridViewColumn Width="300" Header="Subject" 
                                DisplayMemberBinding="{Binding subject}"/>
                <GridViewColumn Width="150" Header="Date" 
                                DisplayMemberBinding="{Binding date}"/>
                <GridViewColumn Width="120" Header="Sender" 
                                DisplayMemberBinding="{Binding sender}"/>
                <GridViewColumn Width="20" Header="ID" 
                                DisplayMemberBinding="{Binding id}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>

我的应用程序可以工作,但是如果我使用该按钮将新项目添加到消息集合中,它们将显示在该集合中,但窗口中没有任何变化。为什么我的数据绑定不起作用以及如何

数据绑定不起作用

您似乎没有设置DataContext。(它必须是包含绑定到的属性的对象,这里是窗口)