Использование поведений
70WPF --- Привязка, команды и стили WPF --- Использование поведений
Для тестирования созданного поведения понадобится создать новый проект WPF-приложения, добавить в него ссылку на библиотеку классов, в которой определен класс DragInCanvasBehavior (созданный в предыдущей статье), и сборку System.Windows.Interactivity.dll. Затем нужно отобразить оба пространства имен в XML-разметке. Предполагая, что класс DragInCanvasBehavior содержится в библиотеке классов CustomBehaviorsLibrary, необходимый код разметки выглядит следующим образом:
<Window xmlns:i=
"clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:custom=
"clr-namespace:CustomBehaviorsLibrary;assembly=CustomBehaviorsLibrary" ... >
Чтобы использовать это поведение, его понадобится добавить в любой элемент внутри Canvas с помощью присоединяемого свойства Interaction.Behaviors. Приведенная ниже разметка создает контейнер Canvas с тремя фигурами. Два элемента Ellipse используют поведение DragInCanvasBehavior и потому могут перетаскиваться внутри Canvas, а элемент Rectangle это поведение не использует и, соответственно, перемещаться в Canvas не может:
<Canvas>
<Rectangle Canvas.Left="10" Canvas.Top="10" Fill="Yellow" Width="40" Height="60"></Rectangle>
<Ellipse Canvas.Left="10" Canvas.Top="70" Fill="Blue" Width="80" Height="60">
<i:Interaction.Behaviors>
<custom:DragInCanvasBehavior></custom:DragInCanvasBehavior>
</i:Interaction.Behaviors>
</Ellipse>
<Ellipse Canvas.Left="80" Canvas.Top="70" Fill="OrangeRed" Width="40" Height="70">
<i:Interaction.Behaviors>
<custom:DragInCanvasBehavior></custom:DragInCanvasBehavior>
</i:Interaction.Behaviors>
</Ellipse>
</Canvas>
Но это еще не все. Если вы разрабатываете приложения в Expression Blend, то поведения предоставят даже еще более удобные возможности на этапе проектирования, одной из которых является возможность вообще избавиться от написания разметки.
Поддержка использования поведений в Expression Blend
В Expression Blend работа с поведениями сводится к операциям перетаскивания и конфигурирования. Первым делом необходимо позаботиться, чтобы в приложении присутствовала ссылка на сборку, в которой содержатся используемые поведения. (В рассматриваемом случае это сборка библиотеки классов, в которой определен класс DraglnCanvasBehavior.) Кроме того, должна присутствовать ссылка на сборку System.Windows.Interactivity.dll.
Среда Expression Blend автоматически ищет поведения во всех указанных сборках и отображает их в панели Asset Library (Библиотека ресурсов); эта же панель используется для выбора элементов при проектировании страницы Silverlight. Также Expression Blend добавляет поведения из сборки Expression.Interactions.dll производства Microsoft, даже если в проекте не было на нее явной ссылки.
Чтобы просмотреть доступные поведения, нарисуйте кнопку на поверхности проектирования страницы, щелкните на кнопке Asset Library и перейдите на вкладку Behaviors (Поведения), как показано на рисунке:
Чтобы добавить действие к элементу управления, перетащите его из Asset Library на нужный элемент управления (в рассматриваемом примере — на одну из фигур в Canvas). После этого Expression Blend автоматически создаст поведение, которое впоследствии можно конфигурировать (при наличии у него свойств).