Использование поведений

70

Для тестирования созданного поведения понадобится создать новый проект 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 (Поведения), как показано на рисунке:

Подключение поведений в Expression Blend

Чтобы добавить действие к элементу управления, перетащите его из Asset Library на нужный элемент управления (в рассматриваемом примере — на одну из фигур в Canvas). После этого Expression Blend автоматически создаст поведение, которое впоследствии можно конфигурировать (при наличии у него свойств).

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