2009-05-29 5 views
0

Ich habe this AttachedCommandProject heruntergeladen und lief es und es funktioniert gut, ermöglicht es mir, z. Setzen Sie einen MouseDown-Befehl auf ein Border-Element und behandeln Sie das mit einem Befehl in meinem ViewModel.Wie verwende ich AttachedCommandBehavior in einem neuen Projekt?

Jetzt möchte ich diese AttachedCommand Funktionalität zu meinem MVVM Visual Studio Template hinzufügen.

ich alle notwendigen Dateien in die meine Ordner Commands des MVVM Projekt kopiert:

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 

Aber wenn ich versuche es mit der gleichen Syntax zu verwenden, wie in dem ursprünglichen Projekt, erhalte ich die Fehler Die Die Eigenschaft 'CommandBehavior.Event' existiert nicht im XML-Namespace 'clr-namespace: MvvmWithAttachedBehaviors.Commands'..

Es gibt keine anderen Dateien zu kopieren und keine anderen Referenzen hinzuzufügen, soweit ich sehen kann.

Was könnte dieser Fehler mir sagen? Hat jemand diese AttachedCommandBehavior-Funktionalität erhalten, um in anderen Projekten zu arbeiten?

<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> 

Antwort

1

Haben die Quelldateien, die CommandBehavior enthalten get in das neue Projekt kopiert? Wenn ja, würde ich den Namensraum überprüfen, in dem sie sich befinden. Es könnte sein, dass der Namespace in diesem Projekt anders ist. Die Zeile: {xmlns:c="clr-namespace:MvvmWithAttachedBehaviors.Commands"} setzt das Präfix "c", um einen Namespace namens MvvmWithAttachedBehaviors.Commands darzustellen, der in der lokalen Assembly vorhanden ist. Wenn sich dieser Namespace in einer anderen Assembly befindet, müssen Sie in dieser Deklaration auf die Assembly verweisen.

Haben Sie versucht, alles neu aufzubauen? Manchmal gibt der Designer XML-Namespace-Fehler, die aufräumen, wenn Sie alle neu erstellen.

Ich hoffe, das hilft ein wenig ...

+0

Das ist, was ich übersehen, musste den "namespace AttachedCommandBehavior" in "namespace MvvmWithAttachedBehaviors.Commands" ändern, danke. –

0

Sie haben die Montage AttachedCommandBehavior.dll in Ihrem Projekt zu verweisen und die XAML-Namespace Deklaration wie das ändern:

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