Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
CanExecute="OpenCmdCanExecute"/> <CommandBinding Command="ApplicationCommands.Save" Executed="SaveCmdExecuted" CanExecute="SaveCmdCanExecute"/> </Window.CommandBindings> <!-- Эта панель устанавливает содержимое окна --> <DockPanel> ... </DockPanel></Window>Щелкните правой кнопкой мыши на каждом из атрибутов
ExecutedCanExecuteРеализация обработчиков события
CanExecuteExecutedCanExecuteCanExecuteRoutedEventArgstrueprivate void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e){ e.CanExecute = true;}private void SaveCmdCanExecute(object sender, CanExecuteRoutedEventArgs e){ e.CanExecute = true;}Обработчики соответствующего события
ExecutedTextBoxSystem.IOMicrosoft.Win32private void OpenCmdExecuted(object sender, ExecutedRoutedEventArgs e){ // Создать диалоговое окно открытия файла и показать // в нем только текстовые файлы. var openDlg = new OpenFileDialog { Filter = "Text Files |*.txt"}; // Был ли совершен щелчок на кнопке ОК? if (true == openDlg.ShowDialog()) { // Загрузить содержимое выбранного файла. string dataFromFile = File.ReadAllText(openDlg.FileName); // Отобразить строку в TextBox. txtData.Text = dataFromFile; }}private void SaveCmdExecuted(object sender, ExecutedRoutedEventArgs e){ var saveDlg = new SaveFileDialog { Filter = "Text Files |*.txt"}; // Был ли совершен щелчок на кнопке ОК? if (true == saveDlg.ShowDialog()) { // Сохранить данные из TextBox в указанном файле. File.WriteAllText(saveDlg.FileName, txtData.Text); }}На заметку! Система команд WPF более подробно рассматривается в главе 28, где будут создаваться специальные команды на основе
ICommandRelayCommandsИтак, пример и начальное знакомство с элементами управления WPF завершены. Вы узнали, как работать с базовыми командами, системами меню, строками состояния, панелями инструментов, вложенными панелями и несколькими основными элементами пользовательского интерфейса (вроде
TextBoxExpanderПонятие маршрутизируемых событий
Вы могли заметить, что в предыдущем примере кода передавался параметр
RoutedEventArgsEventArgsWpfRoutedEventsButton<Window ... <Grid> <Button Name="btnClickMe" Height="75" Width = "250" Click ="btnClickMe_Clicked"> <StackPanel Orientation ="Horizontal"> <Label Height="50" FontSize ="20"> Fancy Button!</Label> <Canvas Height ="50" Width ="100" > <Ellipse Name = "outerEllipse" Fill ="Green" Height ="25" Width ="50" Cursor="Hand"