微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

填充可观察集合以显示在数据网格控件中

如何解决填充可观察集合以显示在数据网格控件中

最近我开始了一个使用 Entity Framework 6 和 WPF 应用程序的项目。我对这两件事都很陌生,但慢慢地我就做到了。

我的数据库已启动并正在运行,这是一个 sql Server 数据库。我正在尝试使用绑定项源和绑定列在数据网格上显示一个表。我还确定,着眼于应用程序应该能够做什么,最好的方法是使用可观察的集合。

这是当前在我的视图模型中的内容

private ObservableCollection<Table1> _columnCollection = new ObservableCollection<Table1>();
public ObservableCollection<Table1> ColumnCollection
{
get
{
return this._columnCollection;
}
set
{
_columnCollection = value;
}
}

我的 View.xaml 数据网格文件

<DataGrid Grid.Row="1" Grid.RowSpan="6" x:Name="Datagrid" HeadersVisibility="Column" AutoGenerateColumns="False"

ItemsSource="{Binding Path=ColumnCollection}">

<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Path=ID}" />
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
</DataGrid.Columns>
</DataGrid>

和数据类

public class Table1
{
public int ID { get; set; }
public string Name { get; set; }
}

然而,数据网格显示为空。 observablecollection 不会以这种方式获取 sql 表中的所有可用列吗? 如果没有,我该怎么做?

解决方法

您需要使您的 Table1 类从 INotifyPropertyChanged 继承,它应该如下所示:

public class Table1 : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;
    private int _ID;
    public int ID
    {
        get { return _ID; }
        set
        {
            _ID = value;
            RaisePropertyChanged("ID");
        }
    }

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

    private void RaisePropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this,new PropertyChangedEventArgs(property));
        }
    }

}

这使 GridView 使用绑定值更新

如果我正确理解您的问题,这应该可行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。