如何在新项目中使用附加的CommandBehavior?

时间:2009-05-29 11:39:48

标签: wpf mvvm attachedbehaviors

我已下载this AttachedCommandProject并运行它并且效果正常,这样我就可以将一个MouseDown命令放在Border元素上,并使用我的ViewModel中的命令处理它。

现在我想将此附加命令功能添加到我的MVVM Visual Studio Template

我将所有必要的文件复制到MVVM项目的我的Commands文件夹中:

13.12.2008  21:00             7.445 BehaviorBinding.cs
05.12.2008  17:50             7.477 CommandBehavior.cs
13.12.2008  21:01             3.908 CommandBehaviorBinding.cs
13.12.2008  21:06             5.097 CommandBehaviorCollection.cs
04.12.2008  21:48             3.564 EventHandlerGenerator.cs
05.12.2008  17:52             2.376 ExecutionStrategy.cs
05.12.2008  17:52             2.067 SimpleCommand.cs

但是当我尝试使用与原始项目中相同的语法时,我得到错误属性'CommandBehavior.Event'在XML命名空间'clr-namespace:MvvmWithAttachedBehaviors.Commands'中不存在。

没有其他文件要复制,而且没有其他参考可以添加到我看来。

这个错误试图告诉我什么?有没有人得到这个AttachedCommandBehavior功能在其他项目中工作?

<Window x:Class="MvvmWithAttachedBehaviors.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:MvvmWithAttachedBehaviors.Commands"
    Title="Main Window" Height="400" Width="800">
    <DockPanel>
        <StackPanel>
            <TextBlock Text="{Binding Output}"/>
            <Border Background="Yellow" Width="350" Margin="0,0,10,0" Height="35" CornerRadius="2"
                        c:CommandBehavior.Event="MouseDown" 
                        c:CommandBehavior.Command="{Binding SomeCommand}"
                        c:CommandBehavior.CommandParameter="This is the parameter sent."
                        >
                <TextBlock Text="MouseDown on this border to execute the command"/>
            </Border>
        </StackPanel>
    </DockPanel>
</Window>

2 个答案:

答案 0 :(得分:1)

包含CommandBehavior的源文件是否已复制到新项目中?如果是这样,我会检查它们所在的命名空间。可能是这个项目中的命名空间不同。行:{xmlns:c="clr-namespace:MvvmWithAttachedBehaviors.Commands"}设置前缀“c”以表示本地程序集中存在的名为MvvmWithAttachedBehaviors.Commands的名称空间。如果此命名空间位于不同的程序集中,则必须在此声明中引用程序集。

您是否尝试重建所有?有时设计器会给你xml命名空间错误,如果你重建所有错误就会清除。

我希望这有点帮助...

答案 1 :(得分:0)

您必须在项目中引用程序集AttachedCommandBehavior.dll,并修改XAML名称空间声明:

xmlns:c="clr-namespace:AttachedCommandBehavior;assembly=AttachedCommandBehavior"