Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WPF-практика 5 События и команды.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.21 Mб
Скачать

Размещение вариантов заголовков окна в ресурсах приложения

В коде вспомогательных функций используется словарь ресурсов приложения, которые мы сейчас определим.

  • Откройте файл разметки App.xaml и дополните его определением ресурсов для хранения неизменяемой части заголовка окна. Областью видимости этих ресурсов будет все приложение

<Application x:Class="Notepad1.App"

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

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

StartupUri="Window1.xaml">

<Application.Resources>

<String xmlns="clr-namespace:System;assembly=Mscorlib" x:Key="ApplicationTitle1">

Title="Window1: Управление состоянием источников команд"

</String>

<String xmlns="clr-namespace:System;assembly=Mscorlib" x:Key="ApplicationTitle2">

Title="Window2: Управление состоянием источников команд"

</String>

</Application.Resources>

</Application>

Создание заготовок обработчиков

Будем мы использовать механизм команд WPF или нет, но без событий и их обработчиков никак не обойтись. Начнем с того факта, что для решения наших задач можно создать обработчики с одинаковой сигнатурой, определяемой делегатом пространства имен System.Windows:

public delegate void RoutedEventHandler(object sender, RoutedEventArgs e)

Имена обработчикам будем присваивать в соответствии с решаемой ими задачей. Обработчики создадим вручную и их необязательно сразу присоединять к событиям источников, поскольку неприсоединенные обработчики будут считаться обычными методами класса. Наиболее полно все задачи представлены в главном меню приложения, поэтому для каждой из них нужно создать свою группу обработчиков. Выполним все это по порядку, размещая группы обработчиков в соответствующих частях класса Window1.

  • Добавьте в часть класса Window1, расположенную в файле File.cs, следующие пустые обработчики по количеству задач меню в разделе File

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;

namespace Notepad1

{

partial class Window1

{

//------------------------------------------------------

//

// Обработчики источников задач File

//

//------------------------------------------------------

private void NewOnExecute(object sender, RoutedEventArgs e)

{

}

private void OpenOnExecute(object sender, RoutedEventArgs e)

{

}

private void SaveOnExecute(object sender, RoutedEventArgs e)

{

}

private void SaveAsOnExecute(object sender, RoutedEventArgs e)

{

}

private void PageSetupOnExecute(object sender, RoutedEventArgs e)

{

}

private void PrintPreviewOnExecute(object sender, RoutedEventArgs e)

{

}

private void PrintOnExecute(object sender, RoutedEventArgs e)

{

}

private void ExitOnExecute(object sender, RoutedEventArgs e)

{

}

}

}

  • Добавьте в часть класса Window1, расположенную в файле Edit.cs, следующие пустые обработчики по количеству задач меню в разделе Edit

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;

namespace Notepad1

{

partial class Window1

{

//------------------------------------------------------

//

// Обработчики источников задач Edit

//

//------------------------------------------------------

private void UndoOnExecute(object sender, RoutedEventArgs e)

{

}

private void RedoOnExecute(object sender, RoutedEventArgs e)

{

}

private void CutOnExecute(object sender, RoutedEventArgs e)

{

}

private void CopyOnExecute(object sender, RoutedEventArgs e)

{

}

private void PasteOnExecute(object sender, RoutedEventArgs e)

{

}

private void DeleteOnExecute(object sender, RoutedEventArgs e)

{

}

private void FindOnExecute(object sender, RoutedEventArgs e)

{

}

private void FindNextOnExecute(object sender, RoutedEventArgs e)

{

}

private void ReplaceOnExecute(object sender, RoutedEventArgs e)

{

}

private void GoToOnExecute(object sender, RoutedEventArgs e)

{

}

private void SelectAllOnExecute(object sender, RoutedEventArgs e)

{

}

}

}

  • Добавьте в часть класса Window1, расположенную в файле Other.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;

namespace Notepad1

{

partial class Window1

{

//------------------------------------------------------

//

// Прочие обработчики

//

//------------------------------------------------------

private void FontOnExecute(object sender, RoutedEventArgs e)

{

}

private void WordWrapOnExecute(object sender, RoutedEventArgs e)

{

}

private void AboutOnExecute(object sender, RoutedEventArgs e)

{

}

}

}

  • Запустите приложение и убедитесь, что ошибок компиляции нет, но функциональности от выполненной нами работы в нем пока не прибавилось