Язык программирования C#9 и платформа .NET5
Часть 509 из 642 Информация о книге
this.inkRadio.IsChecked = true;this.comboColors.SelectedIndex = 0;}Теперь запустите программу еще раз, нажав <F5>. Войдите в режим
и нарисуйте что-нибудь. Затем перейдите в режимInkи сотрите ранее нарисованное (курсор мыши автоматически примет вид стирающей резинки). Наконец, переключитесь в режимEraseи выберите несколько линий, используя мышь в качестве лассо.SelectОхватив элемент, его можно перемещать по поверхности холста, а также изменять размеры. На рис. 25.20 демонстрируются разные режимы в действии.
Элемент управления ComboBox
После заполнения элемента управления
(илиComboBox) есть три способа определения выбранного в них элемента. Во-первых, когда необходимо найти числовой индекс выбранного элемента, должно применяться свойствоListBox(отсчет начинается с нуля; значениеSelectedIndexпредставляет отсутствие выбора). Во-вторых, если требуется получить объект, выбранный внутри списка, то подойдет свойство-1. В-третьих, свойствоSelectedItemпозволяет получить значение выбранного объекта (обычно с помощью вызоваSelectedValue).ToString()Последний фрагмент кода, который понадобится добавить для данной вкладки, отвечает за изменение цвета штрихов, нарисованных в
. СвойствоInkCanvasэлементаDefaultDrawingAttributesвозвращает объектInkCanvas, который позволяет конфигурировать многочисленные аспекты пера, включая его размер и цвет (помимо других настроек). Модифицируйте код C# следующей реализацией методаDrawingAttributes:ColorChanged()private void ColorChanged(object sender, SelectionChangedEventArgs e){<b> // Получить выбранный элемент в раскрывающемся списке.</b>string colorToUse =(this.comboColors.SelectedItem as ComboBoxItem)?.Content.ToString();<b> // Изменить цвет, используемый для визуализации штрихов.</b>this.MyInkCanvas.DefaultDrawingAttributes.Color =(Color)ColorConverter.ConvertFromString(colorToUse);}Вспомните, что
содержит коллекциюComboBox. В сгенерированной разметке XAML присутствует такое определение:ComboBoxIterns<ComboBox x:Name="comboColors" Width="100" SelectionChanged="ColorChanged"><ComboBoxItem Content="Red"/><ComboBoxItem Content="Green"/><ComboBoxItem Content="Blue"/></ComboBox>В результате обращения к свойству
получается выбранный элементSelectedItem, который хранится как экземпляр общего типаComboBoxItem. После приведенияObjectкObjectизвлекается значениеComboBoxItem, которое будет строкойContent,RedилиGreen. Эта строка затем преобразуется в объектBlueс применением удобного служебного классаColor. Снова запустите программу. Теперь должна появиться возможность переключения между цветами при визуализации изображения.ColorConverterОбратите внимание, что элементы управления
иComboBoxтакже могут иметь сложное содержимое, а не только список текстовых данных. Чтобы получить представление о некоторых возможностях, откройте редактор XAML для окна и измените определение элемента управленияListBox, поместив в него набор элементовComboBox, каждый из которых содержитStackPanelиEllipse(свойствоLabelэлементаWidthустановлено вComboBox):175<ComboBox x:Name="comboColors" Width="175" Margin="10,0,0,0"SelectionChanged="ColorChanged"><StackPanel Orientation ="Horizontal" Tag="Red"><Ellipse Fill ="Red" Height ="50" Width ="50"/><Label FontSize ="20" HorizontalAlignment="Center"VerticalAlignment="Center" Content="Red"/></StackPanel><StackPanel Orientation ="Horizontal" Tag="Green"><Ellipse Fill ="Green" Height ="50" Width ="50"/><Label FontSize ="20" HorizontalAlignment="Center"VerticalAlignment="Center" Content="Green"/></StackPanel><StackPanel Orientation ="Horizontal" Tag="Blue"><Ellipse Fill ="Blue" Height ="50" Width ="50"/>
