WPF 데이터 그리드에 목록 을 바인딩하려면 어떻게 해야 합니까?
저는 WPF가 처음이라 기본적인 데이터 바인딩을 하고 싶습니다.사용자 지정 개체 목록이 있는데 이 목록을 데이터 그리드에 바인딩하려고 합니다.
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; }
}
}
내 그리드는 다음과 같습니다.
<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>
ASP의 데이터 바인딩에 익숙합니다.네트, 내가 쉽게 말할 수 있는 곳:
this.dataGrid1.DataSource = list;
WPF에서 어떻게 진행해야 합니까?
만약 당신이 그것을 기대하지 않는다면.list
그러면 Asp에 사용한 것과 동일한 접근 방식을 사용할 수 있습니다.넷(대신)DataSource
WPF의 이 속성은 일반적으로 이름이 지정됩니다.ItemsSource
):
this.dataGrid1.ItemsSource = list;
하지만 당신이 당신의 것을 교체하고 싶다면,list
새 수집 인스턴스와 함께 사용하는 것을 고려해야 합니다.databinding
.
이 작업은 xaml 코드로 수행해야 합니다.
<DataGrid ItemsSource="{Binding list}" [...]>
[...]
</DataGrid>
사용하는 것이 좋습니다.ObservableCollection
백업 컬렉션으로, 데이터 그리드가 구현될 때 변경 사항을 전파할 수 있습니다.INotifyCollectionChanged
.
실제로 정렬, 필터링 등을 적절하게 지원하기 위해 수집 보기소스는 다음과 같이 DataGrid와 목록 간의 링크로 사용해야 합니다.
<Window.Resources>
<CollectionViewSource x:Key="ItemCollectionViewSource" CollectionViewType="ListCollectionView"/>
</Window.Resources>
DataGrid 라인은 다음과 같습니다.
<DataGrid
DataContext="{StaticResource ItemCollectionViewSource}"
ItemsSource="{Binding}"
AutoGenerateColumns="False">
뒤에 있는 코드에서 CollectionView를 연결합니다.링크가 포함된 소스입니다.
CollectionViewSource itemCollectionViewSource;
itemCollectionViewSource = (CollectionViewSource)(FindResource("ItemCollectionViewSource"));
itemCollectionViewSource.Source = itemList;
자세한 예는 CoedProject에 대한 제 기사를 참조하십시오. http://www.codeproject.com/Articles/683429/Guide-to-WPF-DataGrid-formatting-using-bindings
xaml에서는 열 이름을 수동으로 지정할 필요가 없습니다.AutoGenerateColumns 속성을 true로 설정하기만 하면 목록이 자동으로 DataGrid에 바인딩됩니다.참조 부호XAML 코드:
<Grid>
<DataGrid x:Name="MyDatagrid" AutoGenerateColumns="True" Height="447" HorizontalAlignment="Left" Margin="20,85,0,0" VerticalAlignment="Top" Width="799" ItemsSource="{Binding Path=ListTest, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False"> </Grid>
C#
Public Class Test
{
public string m_field1_Test{get;set;}
public string m_field2_Test { get; set; }
public Test()
{
m_field1_Test = "field1";
m_field2_Test = "field2";
}
public MainWindow()
{
listTest = new List<Test>();
for (int i = 0; i < 10; i++)
{
obj = new Test();
listTest.Add(obj);
}
this.MyDatagrid.ItemsSource = ListTest;
InitializeComponent();
}
언급URL : https://stackoverflow.com/questions/4983951/how-do-i-bind-a-listcustomobject-to-a-wpf-datagrid
'programing' 카테고리의 다른 글
리눅스: 백그라운드 태스크 제거 (0) | 2023.05.04 |
---|---|
ValueError: 기본값이 10인 int()의 리터럴이 잘못되었습니다. (0) | 2023.05.04 |
사용자의 현재 위치/좌표 가져오기 (0) | 2023.05.04 |
Azure 테넌트와 Azure 서브스크립션의 차이점은 무엇입니까? (0) | 2023.05.04 |
후행 0 제거 (0) | 2023.05.04 |