Язык программирования C#9 и платформа .NET5
<Label FontSize ="20" HorizontalAlignment="Center"VerticalAlignment="Center" Content="Blue"/></StackPanel></ComboBox>В определении каждого элемента
выполняется присваивание значения свойствуStackPanel, что является быстрым и удобным способом выявления, какой стек элементов был выбран пользователем (для этого существуют и лучшие способы, но пока достаточно такого). С указанной поправкой необходимо изменить реализацию методаTag:ColorChanged()private void ColorChanged(object sender, SelectionChangedEventArgs e){<b> // Получить свойство Tag выбранного элемента StackPanel.</b>string colorToUse = (this.comboColors.SelectedItemas StackPanel).Tag.ToString();...}После запуска программы элемент управления
будет выглядеть так, как показано на рис. 25.21.ComboBoxСохранение, загрузка и очистка данных InkCanvas
Последняя часть вкладки
позволит сохранять и загружать данные контейнераInk API, а также очищать его содержимое, добавляя обработчики событий для кнопок в панели инструментов. Модифицируйте разметку XAML для кнопок за счет добавления разметки, отвечающей за события щелчков:InkCanvas<Button Grid.Column="0" x:Name="btnSave" Margin="10,10"Width="70" Content="Save Data"Click="SaveData"/><Button Grid.Column="1" x:Name="btnLoad" Margin="10,10"Width="70" Content="Load Data"Click="LoadData"/><Button Grid.Column="2" x:Name="btnClear" Margin="10,10"Width="70" Content="Clear"Click="Clear"/>Импортируйте пространства имен
иSystem.IOв файл кода. Реализуйте обработчики событий следующим образом:System.Windows.Inkprivate void SaveData(object sender, RoutedEventArgs e){<b> // Сохранить все данные InkCanvas в локальном файле.</b>using (FileStream fs = new FileStream("StrokeData.bin", FileMode.Create))this.MyInkCanvas.Strokes.Save(fs);fs.Close();MessageBox.Show("Image Saved","Saved");}private void LoadData(object sender, RoutedEventArgs e){<b> // Наполнить StrokeCollection из файла.</b>using(FileStream fs = new FileStream("StrokeData.bin",FileMode.Open, FileAccess.Read))StrokeCollection strokes = new StrokeCollection(fs);this.MyInkCanvas.Strokes = strokes;}private void Clear(object sender, RoutedEventArgs e){<b> // Очистить все штрихи.</b>this.MyInkCanvas.Strokes.Clear();}Теперь должна появиться возможность сохранения данных в файле, их загрузки из файла и очистки
от всех данных. Таким образом, работа с первой вкладкой элемента управленияInkCanvasзавершена, равно как и исследование интерфейса Ink API. Конечно, о технологии Ink API можно рассказать еще много чего, но теперь вы должны обладать достаточными знаниями, чтобы продолжить изучение темы самостоятельно. Далее вы узнаете, как применять привязку данных WPF.TabControlВведение в модель привязки данных WPF
Элементы управления часто служат целью для разнообразных операций привязки данных. Выражаясь просто, привязка данных представляет собой действие по подключению свойств элемента управления к значениям данных, которые могут изменяться на протяжении жизненного цикла приложения. Это позволяет элементу пользовательского интерфейса отображать состояние переменной в коде. Например, привязку данных можно использовать для решения следующих задач:
• отмечать флажок элемента управления
на основе булевского свойства заданного объекта:Checkbox• отображать в элементах
информацию, извлеченную из реляционной базы данных:TextBox• подключать элемент
к целому числу, представляющему количество файлов в папке.LabelПри работе со встроенным механизмом привязки данных WPF важно помнить о разнице между источником и местом назначения операции привязки. Как и можно было ожидать, источником операции привязки данных являются сами данные (булевское свойство, реляционные данные и т.д.), а местом назначения (или целью) — свойство элемента управления пользовательского интерфейса, в котором задействуется содержимое данных (вроде свойства элемента управления
илиCheckBox).TextBoxВ дополнение к привязке традиционных данных инфраструктура WPF делает возможной привязку элементов, как было продемонстрировано в предшествующих примерах. Это значит, что можно привязать (скажем) видимость свойства к свойству состояния отметки флажка. Такое действие было определенно возможным в Windows Forms, но требовало реализации через код. Инфраструктура WPF предлагает развитую экосистему привязки данных, которая способна почти целиком поддерживаться в разметке. Она также позволяет обеспечивать синхронизацию источника и цели в случае изменения значений данных.
