如何将WPF DataGrid绑定到ObservableCollection
你能给我一个如何将WPF DataGrid绑定到ObservableCollection的技巧吗? 我看过一些post并没有找到直接答案。 这里和任何地方都有错综复杂的问题,但我的问题并不复杂。 我有一个可观察的集合和WPF DataGrid。 它们都在WPF应用程序中,它是双工合同WCF服务的客户端。 这是一个ObservableCollection:
private ObservableCollection _myCollection = new ObservableCollection(); public ObservableCollection DownloadsCollection { get { return this._downloadsCollection; } }
这是DataGrid的XAML标记:
. . . . . . . .
这是myClass类。 它在WCF服务中实现。 客户端从具有双工合同的WCF服务接收回调中的MyClass实例。 在收到MyClass的每个实例之后,将其放入ObservableCollection中以替换具有相同唯一标识符的前一个实例。
[DataContract] public class MyClass { #region Properties /// /// Downloading unique ID. /// [DataMember] public Guid UniqueId { get; set; } /// /// Target URL. /// [DataMember] public String TargetUrl { get; set; } /// /// Path to Save. /// [DataMember] public String PathToSave { get; set; } /// /// Percentage. /// [DataMember] public Int32 Percentage { get; set; } /// /// Downloaded bytes number. /// [DataMember] public Int64 DownloadedBytesQuantity { get; set; } /// /// Content size. /// [DataMember] public Int64 RealContentLength { get; set; } /// /// Downloading status. /// [DataMember] public String Status { get; set; } #endregion }
如何在我的示例中将DataGrid绑定到ObservableCollection? 提示一下这个主题。 我赦免了我糟糕的英语。
您应该可以通过使用网格的ItemsSource
属性并引用您的集合(可能位于视图模型中)来执行此操作,如下所示:
ItemsSource="{Binding Path=DownloadsCollection}"
然后在列上添加一个绑定,以显示集合中MyClass
对象的信息(属性)。
有关如何执行此操作的更详细教程,请查看此链接。
编辑:
你可以简单地尝试这样的东西,看看是否一切正常,然后转移到自定义列:
WPF中的Datagrid绑定检查此答案。 基本上您需要添加ItemSource
绑定,以便您的网格知道datacontext。
您需要为datagrid columns
添加绑定,因此它知道要显示的内容。 希望这有帮助。
此外,如果需要,您可能需要为DownloadsCollection
和binding mode
添加setter
。 如果您需要更新,这会很有帮助。
您可以像这样填充动态数据网格:
ObservableCollection data = new ObservableCollection (); this.CasesDataGrid.ItemsSource = data;
但是不要忘记将列与您的类的每个项绑定。
XAML代码是这样的:
希望它对你有用。
以下是相应的.cs文件:
employeeGrid.ItemsSource = employeeDetails;