Взаимодействие с формами

70

Не следует никогда забывать, что любая форма, создаваемая на монтажном столе средствами Expression Blend, на самом деле является объектом, с которым можно взаимодеиствовать в коде приложения. В частности, с геометрическими формами (прямоугольниками. эллипсами, линиями, выносками, контурами и пр.) связан целый ряд событии, которые могут быть обработаны в прикладных программах для организации взаимодеиствия с этими формами самыми разными способами.

Первым шагом на пути к взаимодействию с формами в коде должно стать присваивание им подходящих имен в текстовом поле Name на панели Properties. В качестве упражнения попробуйте сделать следующее: по очереди выделите формы инструментом Selection на монтажном столе, а затем присвойте каждой из них имя на панели Properties.

Конкретные имена в данном случае особого значения не имеют, но в реальном проекте они должны стать удобными указателями на тип или иные особенности геометрической формы, как, например, myCallout, myStar и т.д.

Присвоив имя объекту геометрической формы, вы можете сразу же обнаружить, что в его определение в коде XAML добавлен атрибут x:Name, как показано в приведенной ниже строке кода:

<ed:Callout x:Name="myCallout" ...

А теперь выделите любую форму на монтажном столе и щелкните на кнопке Events в правом верхнем углу панели Properties (пиктограмма этой кнопки обозначена знаком молнии). Найдите событие MouseEnter и введите имя InsideAShape метода обработки этого события:

Организация обработки события в Expression Blend

Как только вы нажмете клавишу <Enter>, в среде Expression Blend IDE будет сгенерирован приведенный ниже код обработчика событий, сохраняющийся в соответствующем файле исходного кода текущего проекта:

private void InsideAShape(object sender, System.Windows.Input.MouseEventArgs e)
{
	// TODO: Add event handler implementation here.
}

В рассматриваемом здесь примере обрабатывается событие наведения курсора мыши (MouseEnter) на каждую из форм в текущем проекте, поэтому среди свойств каждой из них следует указать один и тот же метод InsideAShape обработки данного события. Этот метод будет вызываться независимо от того, на какую именно форму был наведен курсор мыши, а следовательно, первый входной параметр данного метода, называемый sender (отправитель) и имеющий тип object, можно использовать для указания конкретной геометрической формы, отправившей событие на обработку, т.е. той формы, в которой оказался курсор мыши.

Если вы занимаетесь программированием профессионально, то приведенный ниже код должен быть вам понятен. В этом коде входной параметр sender сначала приводится к типу родительского элемента UIElement, поскольку все геометрические формы и элементы управления на платформах WPF и Silverlight наследуют от класса UIElement, а затем значение свойства Opacity уменьшается вдвое:

private void InsideAShape(object sender, System.Windows.Input.MouseEventArgs e)
		{
			((UIElement)sender).Opacity = 0.5;
		}

Если вы запустите теперь свое приложение на выполнение, нажав функциональную клавишу <F5>, то при наведении курсора на любую из форм она должна стать полупрозрачной.

Пройди тесты
Лучший чат для C# программистов