Шаг 8. Использование элемента <ListView> для отображения системы дорог, заданной списком, элемент которого – город_откуда, город_куда, стоимость_проезда.

Элемент списка дорог удобно задать в виде объекта специально созданного класса Door. Для работы со списком дорог будет использована страница Page2.xaml.

Действие 1. Включить в состав проекта файл класса с именем Door. cs (рисунок 3.16).

Рисунок 3.16

Действие 2. Модифицировать программный код файла Door. cs и включить описание свойств и конструктора класса Door.

Листинг Door. cs

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

namespace WpfApplication1

{

class Door

{

int id;

public int ID

{

get { return id; }

set { id = value; }

}

string fromTown;

public string FromTown

{

get { return fromTown; }

set { fromTown = value; }

}

string toTown;

public string ToTown

{

get { return toTown; }

set { toTown = value; }

}

int cost;

public int Cost

{

get { return cost; }

set { cost = value; }

}

// Конструктор с параметрами

public Door(int id, string fromTown, string toTown, int cost)

{

this. ID = id;

this. FromTown = fromTown;

this. ToTown = toTown;

this. Cost = cost;

}

// Конструктор по умолчанию

public Door() { }

}

}

Действие 3. Используя ниже приведённое XAML-описание, выполнить разметку страницы Page2.xaml.

Листинг Page2.xaml

<Page x:Class="WpfApplication1.Page2"

xmlns="http://schemas. microsoft. com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas. /winfx/2006/xaml"

НЕ нашли? Не то? Что вы ищете?

xmlns:mc="http://schemas. openxmlformats. org/markup-compatibility/2006"

xmlns:d="http://schemas. /expression/blend/2008"

mc:Ignorable="d"

d:DesignHeight="400" d:DesignWidth="400" Title="Page2" Name="page2" Loaded="page2_Loaded">

<StackPanel>

<ListView Name="gridDoors" SelectionMode="Single" VerticalContentAlignment="Top">

<ListView. ItemContainerStyle>

<Style>

<Setter Property="Control. HorizontalContentAlignment" Value="Stretch" />

<Setter Property="Control. VerticalContentAlignment" Value="Stretch" />

</Style>

</ListView. ItemContainerStyle>

<ListView. View>

<GridView>

<GridViewColumn Header="Номер" Width="Auto">

<GridViewColumn. CellTemplate>

<DataTemplate>

<TextBox Name="ID" Text="{Binding Path=ID, Mode=TwoWay}" />

</DataTemplate>

</GridViewColumn. CellTemplate>

</GridViewColumn>

<GridViewColumn Header="Откуда" Width="Auto">

<GridViewColumn. CellTemplate>

<DataTemplate>

<TextBox Name="FromTown" Text="{Binding Path=FromTown, Mode=TwoWay}" />

</DataTemplate>

</GridViewColumn. CellTemplate>

</GridViewColumn>

<GridViewColumn Header="Куда" Width="Auto">

<GridViewColumn. CellTemplate>

<DataTemplate>

<TextBox Name="ToTown" Text="{Binding Path=ToTown, Mode=TwoWay}" />

</DataTemplate>

</GridViewColumn. CellTemplate>

</GridViewColumn>

<GridViewColumn Header="Цена" Width="Auto">

<GridViewColumn. CellTemplate>

<DataTemplate>

<TextBox Name="Cost" Text="{Binding Path=Cost, Mode=TwoWay}" />

</DataTemplate>

</GridViewColumn. CellTemplate>

</GridViewColumn>

</GridView>

</ListView. View>

</ListView>

<Grid VerticalAlignment="Center" Margin="5">

<Grid. RowDefinitions>

<RowDefinition></RowDefinition>

<RowDefinition></RowDefinition>

<RowDefinition></RowDefinition>

<RowDefinition></RowDefinition>

<RowDefinition></RowDefinition>

<RowDefinition></RowDefinition>

</Grid. RowDefinitions>

<Grid. ColumnDefinitions>

<ColumnDefinition></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

</Grid. ColumnDefinitions>

<Label Grid. Row="0" Grid. Column="0" Padding="5" HorizontalAlignment="Left">

Порядковый номер

</Label>

<TextBox Name="tbID" Grid. Row="0" Grid. Column="1" Background="Beige">

</TextBox>

<Label Grid. Row="1" Grid. Column="0" Padding="5" HorizontalAlignment="Left">

Город - откуда

</Label>

<TextBox Name="tbFrom" Grid. Row="1" Grid. Column="1" Background="Beige">

</TextBox>

<Label Grid. Row="2" Grid. Column="0" Padding="5" HorizontalAlignment="Left">

Город - куда

</Label>

<TextBox Name="tbTo" Grid. Row="2" Grid. Column="1" Background="Beige">

</TextBox>

<Label Grid. Row="3" Grid. Column="0" Padding="5" HorizontalAlignment="Left">

Стоимость проезда по дороге

</Label>

<TextBox Name="tbCost" Grid. Row="3" Grid. Column="1" Background="Beige">

</TextBox>

<Button Grid. Row="5" Grid. Column="0" Click="Button_Click">

Добавить

</Button>

<Button Grid. Row="5" Grid. Column="1" Click="Button_Click_1">

Удалить

</Button>

</Grid>

</StackPanel>

</Page>

Действие 4. С помощью контекстного меню добавить методы обработки событий Loaded="page2_Loaded", Click="Button_Click" и Click="Button_Click_1" в файл Page2.xaml. cs.

Действие 5. Модифицировать код файла Page2.xaml. cs, добавив программный код обработки событий из листинга, приведённого ниже.

Листинг Page2.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 Page2.xaml

/// </summary>

public partial class Page2 : Page

{

// Объект для хранения списка дорог

List<Door> doors = new List<Door>();

Door door;

public Page2()

{

InitializeComponent();

}

private void page2_Loaded(object sender, RoutedEventArgs e)

{

door = new Door();

door. ID = 0;

door. FromTown = "Усть-Каменогорск";

door. ToTown = "Астана";

door. Cost = 30000;

doors. Add(door);

door = new Door();

door. ID = 1;

door. FromTown = "Усть-Каменогорск";

door. ToTown = "Алматы";

door. Cost = 35000;

doors. Add(door);

door = new Door();

door. ID = 2;

door. FromTown = "Усть-Каменогорск";

door. ToTown = "Москва";

door. Cost = 75000;

doors. Add(door);

door = new Door();

door. ID = 3;

door. FromTown = "Астана";

door. ToTown = "Москва";

door. Cost = 60000;

doors. Add(door);

gridDoors. ItemsSource = doors;

}

private void Button_Click(object sender, RoutedEventArgs e)

{

// Добавить новый объект в список

if (!(tbID. Text == "") & !(tbFrom. Text == "") & !(tbTo. Text == "") & !(tbCost. Text == ""))

{

door = new Door();

door. ID = Convert. ToInt32(tbID. Text);

door. FromTown = tbFrom. Text;

door. ToTown = tbTo. Text;

door. Cost = Convert. ToInt32(tbCost. Text);

doors. Add(door);

gridDoors. ItemsSource = null;

gridDoors. ItemsSource = doors;

tbID. Text = "";

tbFrom. Text = "";

tbTo. Text = "";

tbCost. Text = "";

}

}

private void Button_Click_1(object sender, RoutedEventArgs e)

{

// Номер удаляемого из списка объекта не должен превышать

// количества объектов в списке

if (!(tbID. Text == "") & (Convert. ToInt32(tbID. Text)<=doors. Count-1))

{

doors. RemoveRange(Convert. ToInt32(tbID. Text), 1);

gridDoors. ItemsSource = null;

gridDoors. ItemsSource = doors;

}

}

}

}

Действие 6. Запустить проект на выполнение и проверить работоспособность добавленного XAML-описания для Page2.xaml и процедурной части файла Page2.xaml. cs.

Рисунок 3.17 иллюстрирует простейшие операции по добавлению и удалению объекта из списка doors, отображённого с помощью элемента <ListView> с именем Name="gridDoors".

Рисунок 3.17

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

Класс ListView унаследован от ListBox и дополняет его свойством View, которое представляет ещё одну возможность для создания многофункциональных списковых представлений. Если это свойство не установлено, элемент ListView ведет себя как его менее мощный предок - класс ListBox.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством