Как использовать AttachedCommandBehavior в новом проекте? - PullRequest
0 голосов
/ 29 мая 2009

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

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

Я скопировал все необходимые файлы в папку «Мои команды» проекта 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

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

1 голос
/ 29 мая 2009

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

Вы пытались восстановить все? Иногда дизайнер выдаст вам ошибки пространства имен xml, которые будут устранены, если вы перестроите все.

Надеюсь, это немного поможет ...

0 голосов
/ 29 мая 2009

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

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