【问题标题】:Silverlight 4 DataGrid LoadingRow event using MVVM-Light EventToCommand not firing?Silverlight 4 DataGrid LoadingRow 事件使用 MVVM-Light EventToCommand 未触发?
【发布时间】:2010-06-23 10:24:16
【问题描述】:

我正在使用 MVVM-Light EventToCommand 尝试从我的 ViewModel 实现预取机制,使用发布在 MVVM Light codeplex 网站上的 EventToCommand 示例代码。

不幸的是,该命令似乎没有触发,即使我用作模型的 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 的代码没有。我错过了什么?

【问题讨论】:

    标签: datagrid silverlight-4.0 mvvm-light


    【解决方案1】:

    这不是我第一次听到关于某些 DataGrid 事件的抱怨。我没有时间研究它,但我认为该控件有问题。我会与 MSFT 核实并回复您。

    干杯, 洛朗

    【讨论】:

    • 谢谢劳伦特。正如你所说,我怀疑这是问题根源的 DataGrid 事件,尽管该事件可以正常触发并且可以在后面的代码中毫无问题地使用。
    【解决方案2】:

    我遇到了 WPF 的这个问题。 经过多次尝试,我找到了解决方案,但对我来说仍然不合逻辑。 解决方案是为同一个事件 LoadingRow 调用两次事件触发器。 它对我有用,需要调整一些东西。 不知道我的提议能不能帮助LBugnion先生解决问题,有什么办法分享给大家。

    <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>
    

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 2017-12-18
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多