Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Шаг 2. Использование нестандартных команд.

Читайте также:
  1. D. Использование несколькими пользователями.
  2. II. Использование различных типов фотоплёнок.
  3. IV Использование компьютеров
  4. IV. Использование светофильтров при съёмке и печати.
  5. VI. Использование материалов портфеля индивидуальных образовательных достижений.
  6. VII. Порядок учета коммунальных услуг с использованием приборов учета, основания и порядок проведения проверок состояния приборов учета и правильности снятия их показаний
  7. А) да, их использование в последнее время относится к профилактической эндодонтии

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

Решение. Обычно команды сгруппированы в статических классах, чтобы к ним удобнее было обращаться. Определим две команды:

public class WpfTextEditorCommands
{
public static RoutedUICommand ExitCommand;
public static RoutedUICommand WordWrapCommand;

static WpfTextEditorCommands ()
{
InputGestureCollection exitInputs =
new InputGestureCollection();
exitlnputs.Add(new KeyGesture(Key.F4, ModifierKeys.Alt));
ExitCommand = new RoutedUICommand("Exit application",
"ExitApplication",
typeof(WpfTextEditorCommands), exitInputs);
WordWrapCommand = new RoutedUICommand("Word wrap", "Wordwrap",
typeof (WpfTextEditorCommands));
}
}

Теперь можно связывать эти команды с элементами управления и закреплять их за обработчиками событий:

public partial class Window1:Window
{
public Window1()
{
InitializeComponent();
// Создать обработчики для наших нестандартных команд
CommandBinding cmdBindingExit = new
CommandBinding (WpfTextEditorCommands.ExitCommand);
cmdBindingExit.Executed += new
ExecutedRoutedEventHandler(cmdBindingExit_Executed);
CommandBinding cmdBindingWordWrap = new
CommandBinding (WpfTextEditorCommands.WordWrapCommand);
cmdBindingWordWrap.Executed += new
ExecutedRoutedEventHandler(cmdBindingWordWrap_Executed);
this.CommandBindings.Add(cmdBindingExit);
this.CommandBindings.Add(cmdBindingWordWrap);
}

void cmdBindingWordWrap_Executed(object sender, ExecutedRoutedEventArgs e)
{
textBox.TextWrapping =
((textBox.TextWrapping == TextWrapping.NoWrap)?
TextWrapping.Wrap: TextWrapping.NoWrap);
}

void cmdBindingExit_Executed(object sender, ExecutedRoutedEventArgs e)
{
Application.Current.Shutdown();
}
}

Соберем все вместе с помощью XAML-кода:

<Window x:Class="WpfTextEditor.Windowl"
... >
<DockPanel Name="dockPanel1"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Menu DockPanel.Dock="Top" Height="Auto">
<MenuItem Header="_Fi1e">
<MenuItem Header="_Exit"
Conmmand="local:Wpf TextEditor Commands.ExitCammand"/>
</MenuItem>
<MenuItem Header="_View">
<MenuItem Header="_Wordwrap" IsCheckable="True"
Name="menuItemWordwrap"
Command="local:Wpf TextEditorCommands.WordWrapCammand"/>
</MenuItem>
</Menu>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
<CheckBox IsChecked="{Binding Mode=TwoWay,
ElementName=menuItemWordWrap, Path=IsChecked}"
Command="local:Wpf TextEditorCommands.WordWrapCammand">
<Image Source="Resources\WordWrap.png"
OpacityMask="White"/>
</CheckBox>
</ToolBar>
</ToolBarTray>
</DockPanel>
</Window>

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


Дата добавления: 2015-08-13; просмотров: 72 | Нарушение авторских прав


Читайте в этой же книге: Шаг 5. Использование Custom Control | Шаг 1. Инкапсуляция UI в User Control | Композиция элементов | Слабая связь | События | Команды | Команды и привязка к данным | Добавление триггеров к данным | Добавление триггеров к элементам управления | Если мы хотим получать извещения о нажатии любой кнопки в окне, достаточно просто вызвать метод |
<== предыдущая страница | следующая страница ==>
Триггер, который позволяет применять изменения, основанные на состоянии нескольких свойств.| Класс представления (View).

mybiblioteka.su - 2015-2024 год. (0.004 сек.)