Вы можете найти XCommand проект расширения с открытым исходным кодом codeplex wpf здесь, xcommand.codeplex.com , это позволяет вам связывать Command и CommandParameter любых событий, таких как MouseMove, MouseLeftButtonDown, с любымЭлементы пользовательского интерфейса, наследуемые от WPF UIElement.
Здесь вы можете найти версию библиотек классов для windows store 8 и windows desktop application.Вы хотите WPFXCommand, который имеет дело с настольным приложением WPF.Вот как это работает.Добавьте WPFXCommand.dll в качестве ссылки на ваш проект.
Добавьте пространство имен в свой файл xaml, как показано ниже:
xmlns:XCmd="clr-namespace:WPFXCommand;assembly=WPFXCommand"
Теперь вы можете связать Команда и CommandParameter для любых доступных событий в любых элементах пользовательского интерфейса, наследуемых от WPF UIElement, как показано ниже:
<Grid>
<TextBlock Margin="20,30,20,0" VerticalAlignment="Top" Height="80" x:Name="XTextBlock"
Foreground="{Binding FgColor, Mode=TwoWay}"
XCmd:MouseMove.Command="{Binding TextBlockPointerMovedCommand}"
XCmd:MouseLeftButtonDown.Command="{Binding TextBlockPointerPressedCommand}"
XCmd:MouseLeave.Command="{Binding TextBlockPointerExitedCommand}"
Text="{Binding Description, Mode=TwoWay}">
</TextBlock>
<Grid Grid.Column="1" Background="{Binding BgColor, Mode=TwoWay}"
XCmd:MouseMove.Command="{Binding GridPointerMovedCommand}"
XCmd:MouseMove.CommandParameter="{Binding ElementName=XTextBlock, Path=Text}"
XCmd:MouseLeftButtonDown.Command="{Binding GridPointerPressedCommand}"
XCmd:MouseLeftButtonDown.CommandParameter="{Binding ElementName=XTextBlock, Path=Text}"
>
</Grid>
</Grid>
Надеюсь, что этопоможет вам избавиться от кода, основанного на событиях.