0

我已经下载了这个 AttachedCommandProject并运行了它,它运行良好,使我能够在 Border 元素上放置一个 MouseDown 命令,并在我的 ViewModel 中使用一个命令来处理它。

现在我想将此 AttachedCommand 功能添加到我的MVVM Visual Studio 模板中。

我将所有必要的文件复制到了 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

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

据我所知,没有其他文件要复制,也没有其他参考要添加。

这个错误可能试图告诉我什么?有没有人让这个 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>
4

2 回答 2

1

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

你试过重建所有吗?有时,设计器会给你 xml 命名空间错误,如果你全部重建,这些错误就会清除。

希望这会有帮助...

于 2009-05-29T12:39:37.463 回答
0

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

xmlns:c="clr-namespace:AttachedCommandBehavior;assembly=AttachedCommandBehavior"
于 2009-05-29T12:48:11.423 回答