如何解决填充可观察集合以显示在数据网格控件中
最近我开始了一个使用 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 举报,一经查实,本站将立刻删除。