Я использую MVVM-Light EventToCommand, чтобы попытаться реализовать механизм предварительной выборки из моей ViewModel, используя пример кода для EventToCommand, размещенный на сайте кодеплекса MVVM Light.
К сожалению, команда не срабатывает, хотя событие MouseMove, которое я использовал в качестве своей модели, срабатывает нормально.
Я упустил что-то странное в событии DataGrid LoaddingRow, что означает, что это никогда не сработает?
Вот мой XAML (с искусственно добавленным событием MouseMove, чтобы доказать основы):
<sdk:DataGrid x:Name="TaskDataGrid"
AutoGenerateColumns="True" CanUserReorderColumns="False"
CanUserResizeColumns="False" ItemsSource="{Binding UserTasks}">
<!-- LoadingRow="TaskDataGrid_LoadingRow"> -->
<i:Interaction.Triggers>
<i:EventTrigger EventName="LoadingRow">
<cmd:EventToCommand PassEventArgsToCommand="True"
Command="{Binding CheckForPrefetchCommand}" />
</i:EventTrigger>
<i:EventTrigger EventName="MouseMove">
<cmd:EventToCommand PassEventArgsToCommand="True"
Command="{Binding MoveMouseCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
и Т. Д.
Вот код в моей ViewModel:
public RelayCommand<MouseEventArgs> MoveMouseCommand
{
get;
private set;
}
public RelayCommand<DataGridRowEventArgs> CheckForPrefetchCommand
{
get;
private set;
}
и в конструкторе для ViewModel вызывается следующее
CheckForPrefetchCommand = new RelayCommand<DataGridRowEventArgs>(e =>
{
// Do stuff here
int rowCount = e.Row.GetIndex();
});
MoveMouseCommand = new RelayCommand<MouseEventArgs>(e =>
{
var element = e.OriginalSource as UIElement;
var point = e.GetPosition(element);
string temp = string.Format("Position: {0}x{1}", point.X, point.Y);
});
Код для MouseMove срабатывает, код для LoadingRow — нет. Что мне не хватает?