MVVM-Light EventToCommandを使用して、MVVM Lightコードプレックスサイトに投稿されているEventToCommandのサンプルコードを使用して、ViewModelからのプリフェッチメカニズムを実装しようとしています。
残念ながら、モデルとして使用したMouseMoveイベントは正常に起動しますが、コマンドは起動しないようです。
これが機能しないことを意味するDataGridLoaddingRowイベントについて何かファンキーなものが欠けていますか?
これが私の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のコードはヒットしていません。私は何が欠けていますか?