Я использую MVTM-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 - нет. Чего мне не хватает?