Обработчик события OHLCChart_Click
в представлении должен быть заменен свойством ICommand
модели представления, к которой вы привязываете:
<MenuItem Header="OHLC Chart" Command="{Binding ChartCommand"}/>
Пожалуйста, обратитесь к этому блогуопубликовать для получения дополнительной информации о том, как обрабатывать события в MVVM.
Вы также должны привязать свойство SelectedItem
DataGrid
к свойству источника модели представления:
<DataGrid x:Name="GridData" ItemsSource="{Binding MarketPriceGrid}"
SelectedItem="{Binding TheSelectedItem}">
После этого у вас будет прямой доступ к выбранному в данный момент элементу в методе Execute
команды в модели представления:
_clickCommand = new DelegateCommand<object>(
(s) => { /* do something with this.TheSelectedItem */ }, //Execute
(s) => true //CanExecute
);
Таким образом, вы перемещаете логику приложения из представления в модель представления, гдеон принадлежит и может тестироваться и развиваться изолированно без присутствия представления.
Обратите внимание, что существуют инфраструктуры MVVM, такие как, например, Prism
и MvvmLight
, которые предоставляют реализации для ICommand
и другие вещи, связанные с MVVM, чтобы сделать вашу жизнь проще.