cit*_*nas 44 c# data-binding wpf datagrid
我是WPF的新手,想要做一些基本的数据绑定.我有一个CustomObject的列表,并希望将其绑定到DataGrid.
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<ArticleItem> list = new List<ArticleItem>()
{
new ArticleItem(){ ID=3, Title="test", ViewCount=5},
new ArticleItem(){ ID=3, Title="test", ViewCount=5},
new ArticleItem(){ ID=3, Title="test", ViewCount=5},
new ArticleItem(){ ID=3, Title="test", ViewCount=5},
};
}
}
public class ArticleItem
{
public int ID { get; set; }
public int ViewCount { get; set; }
public String Title { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我的网格的样子:
<DataGrid Height="179" HorizontalAlignment="Left" Margin="54,65,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="382">
<DataGrid.Columns>
<DataGridTextColumn Header="ID"/>
<DataGridTextColumn Header="ViewCount" />
<DataGridTextColumn Header="Title" />
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
我已经习惯了ASP.Net的数据绑定,我可以很容易地说:
this.dataGrid1.DataSource = list;
Run Code Online (Sandbox Code Playgroud)
我该如何进行WPF?
Sno*_*ear 30
如果您不希望list重新创建,那么您可以使用与Asp.Net相同的方法(而不是DataSourceWPF中的此属性通常被命名ItemsSource):
this.dataGrid1.ItemsSource = list;
Run Code Online (Sandbox Code Playgroud)
但是,如果您想要更换list新的集合实例,那么您应该考虑使用databinding.
Fem*_*ref 20
你应该在xaml代码中做到这一点:
<DataGrid ItemsSource="{Binding list}" [...]>
[...]
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
我建议你使用一个ObservableCollection作为你的支持集合,因为它会将更改传播到datagrid,因为它实现了INotifyCollectionChanged.
Pet*_*ber 12
实际上,为了正确支持排序,过滤等,CollectionViewSource应该用作DataGrid和列表之间的链接,如下所示:
<Window.Resources>
<CollectionViewSource x:Key="ItemCollectionViewSource" CollectionViewType="ListCollectionView"/>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
DataGrid行如下所示:
<DataGrid
DataContext="{StaticResource ItemCollectionViewSource}"
ItemsSource="{Binding}"
AutoGenerateColumns="False">
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,您将CollectionViewSource与您的链接相关联.
CollectionViewSource itemCollectionViewSource;
itemCollectionViewSource = (CollectionViewSource)(FindResource("ItemCollectionViewSource"));
itemCollectionViewSource.Source = itemList;
Run Code Online (Sandbox Code Playgroud)
有关详细示例,请参阅我在CoedProject上的文章:http: //www.codeproject.com/Articles/683429/Guide-to-WPFvalsGrid-formatting-using-bindings
| 归档时间: |
|
| 查看次数: |
107644 次 |
| 最近记录: |