0

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のコードはヒットしていません。私は何が欠けていますか?

4

2 に答える 2

1

一部の DataGrid イベントに関するこのような苦情を耳にするのは、これが初めてではありません。調べる時間はありませんでしたが、そのコントロールに何か問題があると思います。MSFT に確認して、折り返しご連絡いたします。

乾杯、ローラン

于 2010-06-23T11:50:17.250 に答える
1

私はWPFでこの問題を抱えています。何度も試みた後、解決策を見つけましたが、まだ論理的ではありません。解決策は、同じイベント LoadingRow に対してイベント トリガーを 2 回呼び出すことです。いくつかの調整が必要です。私の提案が LBugion 氏が問題を解決するのに役立つかどうかはわかりません。とにかく、あなたと共有します。

<i:Interaction.Triggers>
            <i:EventTrigger EventName="LoadingRow">
                <cmd:EventToCommand PassEventArgsToCommand="True"
                    Command="{Binding CheckForPrefetchCommand}" />
            </i:EventTrigger>
            <i:EventTrigger EventName="LoadingRow">
                <cmd:EventToCommand PassEventArgsToCommand="True"
                    Command="{Binding CheckForPrefetchCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
于 2012-03-27T10:20:41.120 に答える