将ObservableCollection绑定到DataGrid
本文关键字:DataGrid 绑定 ObservableCollection | 更新日期: 2023-09-27 18:30:07
好吧,我是WPF的新手。我正在尝试将集合绑定到DataGrid
控件。当我运行程序时,即使集合中有数据,DataGrid
中的单元格也是空白的。
我已经多次阅读MSDN上的所有相关文章。我搜索了Stack Overflow,但运气不佳。我花了一天半的时间在这上面,和刚开始的时候一样困惑。这是我迄今为止所拥有的。
DataGrid
控件的XAML:
<DataGrid AutoGenerateColumns="False" Margin="0,85,0,0" Name="dtaCompilation" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding FileName}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
这是包含我收藏的类:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
dtaCompilation.DataContext = Compilation;
}
ObservableCollection<CompilationFile> Compilation = new ObservableCollection<CompilationFile>();
public class CompilationFile : INotifyPropertyChanged
{
public CompilationFile(string setPath, string setFile, string setExt)
{
this.Path = setPath;
this.FileName = setFile;
this.Extension = setExt;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
private string fileName;
string FileName {
get { return fileName; }
set
{
fileName = value;
OnPropertyChanged("FileName");
}
}
string Path { get; set; }
string Extension { get; set; }
}
}
最终的结果是DataGrid
只显示Compilation
集合中每个CompilationFile
对象的FileName
属性。如果编辑DataGrid中的单元格,则相关对象的FileName
属性将在集合中更新。我到底需要做些什么才能使用上面的代码?
设置要数据绑定到公共的属性
public string FileName {
get { return fileName; }
set
{
fileName = value;
OnPropertyChanged("FileName");
}
}
public string Path { get; set; }
public string Extension { get; set; }