Автор работы: Пользователь скрыл имя, 01 Сентября 2013 в 23:15, творческая работа
WindowsPresentationFoundation (WPF) — система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework, использующая язык XAML.
WPF предустановленав Windows Vista, Windows, Windows 8.С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений.
В основе WPF лежит векторная система визуализации, не зависящая от разрешения устройства вывода и созданная с учётом возможностей современного графического оборудования.
Введение 5
1 Проектирование приложения 6
1.1 Постановка задачи 6
1.2 Проектируемое приложение 6
1.3 Отображение списка папок 6
1.4 Отображение списка файлов 7
1.6 Контекстное меню 7
1.7 Использование ранее созданных классов 7
2 Реализация приложения 8
2.1 Интерфейс приложения 8
2.2 Реализация заполнения дерева папок 8
2.3 Реализация заполнения ListView 9
2.4 Реализация контекстного меню 10
2.5 Тестирование программы 11
Заключение 12
ImageSource wpfBitmap =
Imaging.
hBitmap, IntPtr.Zero, Int32Rect.Empty,
BitmapSizeOptions.
return wpfBitmap;
}
catch
{
return null;
}
}
Рисунок 5 – Конвертация Icon в ImageSource
2.4 Реализация контекстного меню
Для отображения контекстного меню в списке файлов используется сторонний модуль, подключенный к проекту. Данный модуль отображает все пункты меню, которое встроено в стандартный «Проводник». Пример данного меню представлен на рисунке 6.
Рисунок 6 – Пример контекстного меню
2.5 Тестирование программы
На рисунке 7 показано состояние программы после того, как пользователь перешел в папку C:\Windows.
Рисунок 7 – Содержимое папки
Работа компонентов на WPF, по сравнению с аналогичными компонентами на Windows Forms, отличается повышенной скоростью. Внешне компоненты выглядят приятнее.
В качестве тестирования, были проведены попытки получить содержимое папок, доступ к которым запрещен.
В данном примере теста рассматривается попытка получить содержимое папки C:\MSOCache. Программа выдает сообщение о том, что доступ невозможен, и не выдает соответственно никакого списка файлов.
Рисунок 8 – Попытка получения доступа
В результате тестирования были
проверены все основные функции
создаваемой программы в
ЗАКЛЮЧЕНИЕ
В ходе выполнения расчетно-графической работы была разработана программа на WPF «Проводник», позволяющая выполнять обзор текущих папок и файлов в системе, получать сведения об этих объектах.
В ходе работы были получены навыки по созданию приложений на WPF. Разработан собственный компонент на базе TreeViewItem.
Программа была успешно протестирована в различных ситуациях.
Используемые методы для работы с объектами были добавлены в собственную библиотеку классов.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 Библиотека [В Интернете] //
MSDN – изучите разработку программного
обеспечения для настольных ПК, веба, облака
и телефонов - http://msdn.microsoft.com/ru-
2 Общие требования к оформлению и изложению документов учебной деятельности обучающихся. СТО 89-03.5 – 2013 [Текст] – Архангельск, 2013 г. – стр. 93.
3 A Simple
WPF Explorer Tree [В Интернете] // CodeProject - http://www.codeproject.com/
4 Windows Presentation Foundation [В Интернете] //
Википедия. Свободная энциклопедия. - http://ru.wikipedia.org/wiki/
ПРИЛОЖЕНИЕ А
(обязательное)
Листинг пользовательского компонента TreeViewItemWithIcons
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>
/// Логика взаимодействия для UserControl1.xaml
/// </summary>
public partial class TreeViewWithIcons : TreeViewItem
{
#region Global variables
ImageSource iconSource;
TextBlock textBlock;
public Image icon;
#endregion Global variables
#region Constructors and Destructors
public TreeViewWithIcons()
{
StackPanel stack = new StackPanel();
stack.Orientation = Orientation.Horizontal;
Header = stack;
icon = new Image();
icon.VerticalAlignment = VerticalAlignment.Center;
icon.Margin = new Thickness(0, 0, 4, 0);
icon.Source = iconSource;
stack.Children.Add(icon);
//Add the HeaderText After Adding the icon
textBlock = new TextBlock();
textBlock.VerticalAlignment = VerticalAlignment.Center;
stack.Children.Add(textBlock);
}
#endregion Constructors and Destructors
#region Properties
public ImageSource Icon
{
set
{
iconSource = value;
icon.Source = iconSource;
}
get
{
return iconSource;
}
}
#endregion Properties
#region Event Handlers
protected override void OnUnselected(RoutedEventArgs args)
{
base.OnUnselected(args);
icon.Source = iconSource;
}
protected override void OnSelected(RoutedEventArgs args)
{
base.OnSelected(args);
icon.Source = iconSource;
}
public string HeaderText
{
set
{
textBlock.Text = value;
}
get
{
return textBlock.Text;
}
}
#endregion Event Handlers
}
}
ПРИЛОЖЕНИЕ Б
(обязательное)
Листинг XAML
<Window x:Class="WpfApplication1.
xmlns="http://schemas.
xmlns:x="http://schemas.
Title="ПолуПроводник"
Height="404" Width="947" Loaded="Window_Loaded"
xmlns:my="clr-namespace:
<Grid ShowGridLines="False">
<StackPanel Height="280" HorizontalAlignment="Left" Margin="21,34,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="380">
<ScrollViewer Height="280" Width="380" HorizontalAlignment="Left" VerticalAlignment="Top">
<TreeView Margin="0,0,0,0" x:Name="treeView1"
VerticalAlignment="Top" Height="280" Width="363"
HorizontalAlignment="Left" AllowDrop="False" SelectedItemChanged="
</ScrollViewer>
</StackPanel>
<ListView Height="280"
Margin="407,34,12,0" Name="listView1" VerticalAlignment="Top"
SelectionMode="Single" SelectionChanged="listView1_
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Height" Value="20" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Иконка">
<GridViewColumn.CellTemplate>
<DataTemplate>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Имя файла" DisplayMemberBinding="{Binding Path=fileName}"/>
<GridViewColumn Header="Атрибуты" DisplayMemberBinding="{Binding Path=attributes}"/>
<GridViewColumn Header="Размер" DisplayMemberBinding="{Binding Path=size}"/>
<GridViewColumn Header="Расширение" DisplayMemberBinding="{Binding Path=extension}"/>
<GridViewColumn Header="Дата создания" DisplayMemberBinding="{Binding Path=creationTime}"/>
</GridView>
</ListView.View>
</ListView>
<StatusBar Height="35" Name="statusBar1" VerticalAlignment="Bottom">
<Label Name="statusFiles">Файлов: 0</Label>
<Label Name="statusFolders">Папок: 0</Label>
</StatusBar>
</Grid>
</Window>