找不到MVVM EventToCommand

时间:2014-08-13 07:04:10

标签: c# wpf mvvm

大家好我正试图在列表框的项目中实现点击效果,但我不断收到此错误:

找不到“cmd:EventToCommand”类型。验证您是否缺少程序集引用,并且已构建所有引用的程序集。

<catel:UserControl
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:catel="http://catel.codeplex.com"
         xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
         xmlns:cmd="http://www.galasoft.ch/mvvmlight"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">

我尝试实现on click方法的代码:

<Grid>
    <ItemsControl ItemsSource="{Binding Source={StaticResource cvsRoutes}}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Expander Header="{Binding Name}" MinHeight="50">
                    <ListBox>
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
                                <cmd:EventToCommand Command="{Binding PreviewMouseLeftButtonDownCommand}" PassEventArgsToCommand="True"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <TextBlock Text="Something" >
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="KeyUp">
                                <cmd:EventToCommand Command="{Binding KeyUpCommand}" PassEventArgsToCommand="True"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        </TextBlock>
                        <TextBlock Text="Something" />
                        <TextBlock Text="Something" />
                        <TextBlock Text="Something" />
                        <TextBlock Text="Something" />
                    </ListBox>
                </Expander>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>

你能告诉我这是什么问题吗?我该如何解决?

3 个答案:

答案 0 :(得分:2)

Catel中提供了所有行为和触发器的良好列表以及如何使用它们:

https://catelproject.atlassian.net/wiki/pages/viewpage.action?pageId=1409064

它还包括EventToCommand:

https://catelproject.atlassian.net/wiki/display/CTL/EventToCommand

答案 1 :(得分:1)

EventToCommand是MVVM-Light的一部分......这是MVVM光之书(Laurent Bugnion)的article on MSDN,他谈到了如何使用它。

你也可以查看一个类似的answer here,但我猜你的选择是使用MVVM-Light,如果你想使用它,或者通过他的代码进行排序并实现类似的东西......

答案 2 :(得分:1)

GalaSoft.MvvmLight库添加到引用中。然后

使用此xmlns:cmd="clr-namespace:GalaSoft.MvvmLight;assembly=GalaSoft.MvvmLight"代替xmlns:cmd="http://www.galasoft.ch/mvvmlight"