首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVM光中的EventToCommand问题

MVVM光中的EventToCommand问题
EN

Stack Overflow用户
提问于 2012-02-01 19:28:35
回答 1查看 5.3K关注 0票数 0

我有下面的可视树,我正试图通过EventToCommand发送一个命令。其视觉效果如下:

代码语言:javascript
复制
<Border Background="Gray" Grid.Row="0" Margin="2" VerticalAlignment="Bottom">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseDown">
                    <cmd:EventToCommand  
                Command="{Binding ShowVideosCmd}" 
                PassEventArgsToCommand="True" 
                CommandParameter="{Binding Videos}">
                    </cmd:EventToCommand>

                </i:EventTrigger>
            </i:Interaction.Triggers>
 </Border>

当单击附加命令的边框时,我会得到以下弹出错误:

“一个未处理的'System.InvalidCastException‘类型异常发生在GalaSoft.MvmLight.WPF4.dll中。

其他信息:无法将“System.Windows.Input.MouseButtonEventArgs”类型的对象强制转换为“System.Windows.DependencyObject”。“

然后在viemModel中创建我的命令,如下所示:

代码语言:javascript
复制
 ShowVideosCmd = new RelayCommand<DependencyObject>(
     (dpObj) =>
            { 
                 messenger.Default.Send<string>("ShowVideos");
            },
     (dpObj) => true
 );

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-01 19:50:45

错误消息是不言而喻的:在您的RelayCommand<DependencyObject>中,您期望命令参数是一个DependencyObject,但是您有一个MouseButtonEventArgs,这是正常的,因为您订阅了MouseDown事件。

当事件触发时,EventToCommand使用以下参数之一执行命令:

RelayCommand<typeOfTheSpecifiedCommandPameter>

  • If

  • 如果CommandParameter的值是而不是 null,则它使用它作为参数,因此命令应该类似于:

  • PassEventArgsToCommand='true' -- CommandParameter的值是null,它使用eventargs作为命令参数。因此,您需要将命令定义为RelayCommand<MouseButtonEventArgs>

  • 如果PassEventArgsToCommand='false' CommandParameternull,则根本不执行命令。H 229f 230

注意:

因此,您需要为这两种情况定义不同的命令。需要时,您必须使用RelayCommand<object>并检查参数类型。这就是为什么我认为同时使用PassEventArgsToCommandCommandParameter是不好的做法。

回到例外情况:

在您的示例中,它接缝CommandParameter="{Binding Videos}"返回null,这就是将MouseButtonEventArgs作为命令参数的原因。

要了解为什么{Binding Videos}为null,可以在运行时检查VS中的输出窗口,查找绑定错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9101957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档