반응형

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;
반응형

+ Recent posts