Добавить комментарий - CodeHelper

Добавить комментарий

Чистый MVVM подход обычно подразумевает использование команд вместо событий и генерации code behind. Но проблема WPF в том, что не все события могут вызывать команду. Обычно с командой связано только одно основное событие некоторых контролов, например, клик на кнопке.

Для решения этой проблемы используется паттерн Attached Behavior и его модификация для команд. Суть паттерна Attached Behavior заключается в инкапсуляции поведения внутри некоторой сущности для последующего применения к любым визуальным элементам. В WPF такая инкапсуляция организуется при помощи стилей. Существует реализация этого паттерна, позволяющая мепить произвольные события на команды, задавая привязку для параметров. Одна из реализаций описана в статье AttachedCommandBehavior V2 aka ACB. Автор разработал библиотеку, позволяющую вызывать команду по событию:

<Border Background="Yellow" Width="350" Margin="0,0,10,0" Height="35" CornerRadius="2" x:Name="test">
    <local:CommandBehaviorCollection.Behaviors>
    <local:BehaviorBinding Event="MouseLeftButtonDown" Action="{Binding DoSomething}" CommandParameter="An Action on MouseLeftButtonDown"/>
    <local:BehaviorBinding Event="MouseRightButtonDown" Command="{Binding SomeCommand}" CommandParameter="A Command on MouseRightButtonDown"/>
    </local:CommandBehaviorCollection.Behaviors>
    <TextBlock Text="MouseDown on this border to execute the command"/>
</Border>
Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.