Демонстрация содержимого ListView в WPF

Автор: Пурушоттам Ратор (Purushottam Rathore) 

В этой статье показывается, как создать элемент управления ListView, использующий режим представления GridView для отображения содержимого.

В этой статье показывается, как создать содержимое элемента управления ListView, используя GridView, XAML и код, а также демонстрируется специфическая возможность WPF.

Элемент управления ListView — это великолепный пример WPF для привязки данных из базы данных, так как его возможность практически бесконечны. Эта статья о ListView, надеюсь, будет полезна начинающим разработчикам. Сегодня я начну с простой сетки, основанной на представлении списка, показывая, как создать столбцы, а также несколько различных способов получения данных для этих столбцов.

Теперь можно определить режим представления GridView, определяя объекты GridViewColumn. В следующем примере показывается, как определять объекты GridViewColumn, привязанные к содержимому данных, заданных для элемента управления ListView. В этом примере GridView определяется три объекта GridViewColumn, отображаемых на поля Name, EMail и CreatedDate источника данных DataSource, заданного как свойство ItemsSource элемента управления ListView.

Пример. Напишите следующий код в файле window1.xaml.

Window1.xaml:

<Window x:Class="WpfApplication2.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="ListView" Height="350" Width="400" Loaded="Window1_Loaded">
<Window.Resources>
    <DataTemplate x:Key="FirstCell">
        <StackPanel Orientation="Horizontal"></StackPanel>
    </DataTemplate>
</Window.Resources>
<Grid>
    <ListView ItemsSource="{Binding}" Name="lstView" Background="LightGray">
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=User_LoginID}" Width="75"/>
                    <GridViewColumn Header="EMail" DisplayMemberBinding="{Binding Path=User_EMail}" Width="200"/>
                    <GridViewColumn Header="CreatedDate" DisplayMemberBinding="{Binding Path=IsCreatedDate}" Width="125"/>
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
</Window>

Window1.xaml.cs:

using System;
using System.Collections.Generic;
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;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.ComponentModel;
using System.Configuration;
using System.Xml;
namespace WpfApplication2
{
    public partial class Window1 : Window
    {
        DataSet ds = new DataSet();
        public Window1()
        {
            InitializeComponent();
        }
        private void Window1_Loaded(object sender, RoutedEventArgs e)
        {
            Grid_Loaded();
        }
        private void Grid_Loaded()
        {
            SqlConnection con = new SqlConnection("Data source=.;initial catalog=Puru; uid=sa;password=;");
            SqlCommand cmd = new SqlCommand("select top 20 User_LoginID,User_EMail, convert(varchar(12),IsCreatedDate,107)IsCreatedDate from tbl_User", con);
            SqlDataAdapter sqlDa = new SqlDataAdapter();
            sqlDa.SelectCommand = cmd;
            sqlDa.Fill(ds);
            lstView.DataContext = ds.Tables[0].DefaultView;
        }
    }
}

Результат: