반응형
XAML
<ListView x:Name="listViewControl" Grid.Row="1" Grid.Column="1" Margin="20,20" Background="#FF3B3B3B" Foreground="White">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="Age" Width="100" DisplayMemberBinding="{Binding Age}"/>
<GridViewColumn Header="Status" Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<local:StatusUc/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
ListView의 Item에 출력할 Model
public class StudentItem
{
public string Name { get; set; }
public int Age { get; set; }
public StatusUc Status { get; set; }
}
ListView에 Model의 각 항목을 Binding함
StudentItem item = new StudentItem();
GridView gridView = new GridView();
GridViewColumn columnName = new GridViewColumn()
{
Header = "Name",
DisplayMemberBinding = new Binding(nameof(item.Name)),
Width = 200,
};
GridViewColumn columnAge = new GridViewColumn()
{
Header = "Age",
DisplayMemberBinding = new Binding(nameof(item.Age)),
Width = 100
};
// StatusUc : 세번째 컬럼에 출력할 UserControl
DataTemplate statusTemplate = new DataTemplate(typeof(StatusUc));
FrameworkElementFactory elementFactory = new FrameworkElementFactory(typeof(StatusUc));
statusTemplate.VisualTree = elementFactory;
GridViewColumn columnStatus = new GridViewColumn()
{
Header = "Status",
CellTemplate = statusTemplate,
Width = 300,
};
gridView.Columns.Add(columnName);
gridView.Columns.Add(columnAge);
gridView.Columns.Add(columnStatus);
listViewControl.View = gridView;
ListView의 ItemsSource에 ObservableCollection 지정
StudentItems = new ObservableCollection<StudentItem>();
StudentItems.Add(new StudentItem()
{
Name = "HongGilDong",
Age = 10,
Status = new StatusUc("SomeValue")
});
StudentItems.Add(new StudentItem()
{
Name = "HongGilDong2",
Age = 7,
Status = new StatusUc("SomeValue")
});
StudentItems.Add(new StudentItem()
{
Name = "HongGilDong3",
Age = 8,
Status = new StatusUc("SomeValue")
});
listViewControl.Items.Clear();
listViewControl.ItemsSource = StudentItems;
반응형
'[====== Development ======] > C#' 카테고리의 다른 글
WPF DataGrid의 RowDetailsTemplate 을 가져오는 방법 (0) | 2021.12.20 |
---|---|
[WPF] ListView 컬럼 순서 변경 (0) | 2021.11.23 |
[WPF] Exception이 발생해도 Application이 죽지 않도록 하는 방법 (0) | 2021.11.17 |
Task Sample Code (0) | 2021.11.16 |
[WPF] Window나 UserControl 생성자에서 디자인타임에 실행방지 (0) | 2021.11.09 |