2009-05-29 6 views
0

Я загрузил this AttachedCommandProject и запустил его, и он хорошо работает, позволяет мне, например. поместите команду MouseDown в элемент Border и обработайте ее с помощью команды в моей модели ViewModel.Как использовать AttachedCommandBehavior в новом проекте?

Теперь я хотел бы добавить это AttachedCommand функциональность к моему MVVM Visual Studio Template.

Я скопировал все необходимые файлы в папку мои команды проекта MVVM:

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 

Но когда я пытаюсь использовать его с тем же синтаксисом, как и в оригинальном проекте, я получаю ошибку The Свойство «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> 

ответ

1

ли исходные файлы, которые содержат CommandBehavior копируются в новый проект? Если это так, я бы проверил пространство имён, в котором они находятся. Возможно, пространство имен отличается в этом проекте. Строка: {xmlns:c="clr-namespace:MvvmWithAttachedBehaviors.Commands"} устанавливает префикс «c» для представления пространства имен с именем MvvmWithAttachedBehaviors.Commands, которое существует в локальной сборке. Если это пространство имен находится в другой сборке, вам нужно будет ссылаться на сборку в этом объявлении.

Вы пытались восстановить все? Иногда разработчик даст вам xml namespace-ошибки, которые проясняются, если вы перестраиваете все.

Я надеюсь, что это помогает мало ...

+0

Вот что я проглядел, пришлось изменить «namespace AttachedCommandBehavior» на «пространство имен MvvmWithAttachedBehaviors.Commands», спасибо. –

0

Вы должны ссылаться на сборку AttachedCommandBehavior.dll в проекте, а также изменить декларацию XAML пространства имен вроде:

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