Списки используемых элементов в панели задач
35WPF --- Элементы управления WPF --- Списки используемых элементов в панели задач
Список недавно использовавшихся документов, который демонстрировался до сих пор, является встроенным в Windows и не требует никакой логики WPF. Однако в WPF предлагаются дополнительные возможности, которые позволяют брать этот список под свой контроль и заполнять его специальными элементами. Для этого потребуется просто добавить в файл App.xaml код разметки, определяющий раздел <JumpList.List>, как показано ниже:
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
<JumpList.JumpList>
<JumpList>
</JumpList>
</JumpList.JumpList>
</Application>
При таком определении специального списка часто используемых элементов Windows перестает отображать список недавних документов. Чтобы вернуть его назад, необходимо явно указать это с помощью свойства ShowRecentCategory:
<JumpList ShowRecentCategory="True">
Можно также добавить свойство ShowFrequentCategory для отображения списка наиболее часто открываемых документов, за обработку которых отвечает данное приложение.
Вдобавок можно создавать собственные элементы и помещать их в желаемую специальную категорию в списке часто используемых элементов. Для этого потребуется добавить в JumpList объекты JumpPath или JumpTask. Ниже показан пример добавления объекта JumpPath, который представляет документ:
<JumpList ShowRecentCategory="True">
<JumpPath CustomCategory="Sample Documents"
Path="c:\Samples\samples.testDoc"></JumpPath>
</JumpList>
При создании объекта JumpPath можно предоставить две детали. С помощью свойства CustomCategory указывается название категории, которая должна отображаться перед данным элементом в списке недавних документов. (В случае добавления нескольких элементов, принадлежащих одной и той же категории, они будут сгруппированы вместе.)
Если категория не указана, Windows будет использовать название Tasks (Задачи). С помощью свойства Path задается путь к файлу, указывающий на нужный документ. При этом должно использоваться полностью уточненное имя файла, файл должен существовать, а его тип должен соответствовать типу файлов, за обработку которых отвечает данное приложение. Если какое-то из перечисленных требований нарушено, элемент не появится в списке часто используемых элементов.
При щелчке на элементе JumpPath происходит в точности то же самое, что и при щелчке на одном из файлов в разделе недавних документов. Windows запускает новый экземпляр приложения и передает ему путь к документу в виде аргумента командной строки.
Объект JumpTask имеет несколько иное предназначение. Если объект JumpPath отображается на документ, то каждый объект JumpTask отображается на какое-то приложение.
Если JumpPath требовал предоставления всего лишь двух деталей, то JumpTask использует гораздо больше свойств, которые перечислены ниже:
- Title
Текст, который должен отображаться в списке часто используемых элементов
- Description
Текст, который должен отображаться в виде подсказки при наведении курсора мыши на данный элемент
- ApplicationPath
Путь к исполняемому файлу нужного приложения. Как и свойство, позволяющее указывать путь к документу в объекте JumpList, свойство ApplicationPath требует применения полностью уточненного имени
- IconResourcePath
Путь к файлу, в котором содержится миниатюрный значок, который Windows будет отображать рядом с данным элементом в списке часто используемых элементов. Как ни странно, но в этом случае Windows не выбирает значок по умолчанию и не извлекает его из исполняемого файла приложения. Если нужно, чтобы рядом с элементом отображался соответствующий значок, следует установить это свойство
- IconResourceIndex
Если ресурс приложения или значков, идентифицированный свойством IconResourcePath, содержит множество значков, в этом свойстве указывается индекс нужного значка
- WorkingDirectorу
Рабочий каталог, из которого будет запускаться приложение. Обычно это папка с документами для этого приложения
- ApplicationPath
Параметр командной строки, который должен передаваться приложению, такой как имя открываемого файла
Создание списка часто используемых элементов в коде
Хотя список часто используемых элементов легко заполнить за счет добавления соответствующего кода разметки в файл App.xaml, с этим подходом связан один серьезный недостаток. Как было показано, элементы JumpPath и JumpTask требуют, чтобы путь к файлу указывался в полностью уточненном формате. Этот путь часто зависит от способа развертывания приложения и потому не должен кодироваться жестким образом. По этой причине принято создавать или изменять список часто используемых элементов программным образом.
Для конфигурирования списка часто используемых элементов в коде применяются классы JumpList, JumpPath и JumpTask из пространства имен System.Windows.Shell. В следующем примере создается новый объект JumpPath, который должен позволить пользователю открывать приложение Notepad (Блокнот) для просмотра файла readme.txt, хранящегося в текущей папке приложения, где бы то ни было установлено:
private void Application_Startup(object sender, StartupEventArgs e)
{
// Извлечение текущего списка часто используемых элементов
JumpList jumpList = new JumpList();
JumpList.SetJumpList(Application.Current, jumpList);
// Добавление нового объекта JumpPath для файла в папке приложения
string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
path = Path.Combine(path, "readme.txt");
if (File.Exists(path))
{
JumpTask jumpTask = new JumpTask();
jumpTask.CustomCategory = "Documentation";
jumpTask.Title = "Read the readme.txt";
jumpTask.ApplicationPath = @"c:\windows\notepad.exe";
jumpTask.IconResourcePath = @"c:\windows\notepad.exe";
jumpTask.Arguments = path;
jumpList.JumpItems.Add(jumpTask);
}
// Обновление списка часто используемых элементов
jumpList.Apply();
}
На рисунке показан измененный список часто используемых элементов, который включает новый добавленный объект JumpTask: