2012-03-31 2 views
4

Ich versuche, eine CallMethodAction gebunden an ein Steuerelement in einem WPF-Fenster zu verwenden, mit der Methode aus der Prism-Bibliothek Beispiele und Dokumentation. Aus irgendeinem Grund weigert sich der XAML-Compiler zu bestätigen, dass der Microsoft.Expression.Interactivity.Core-Namespace überhaupt existiert. Ich habe jedoch kein Problem damit, die gleichen Klassen aus demselben Namensraum im Code-Behind für diese Ansicht zu verwenden.Kann SDK-Klassen im Code verwenden, aber nicht XAML (Prism Desktop)

In XAML ich die kanonischen beiden Namespaces versucht habe:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:ic="http://schemas.microsoft.com/expression/2010/interactions" 

sowie den CLR-Namespace:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" 

Der Namespace Intellisense Popup-Browser zeigt den ersten Namespace aber weder die XML- oder CLR-Namespaces für den zweiten. In beiden Fällen scheitert die folgende XAML zu kompilieren:

<Button HorizontalAlignment="Right" Content="Cancel"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Click"> 
      <ic:CallMethodAction /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</Button> 

es kein Problem zu finden, den Interaction.Triggers Tag hat, aber bemängelt, dass der CallMethodAction Tag existiert nicht in dem angegebenen Namespace. Tatsächlich verhält sich Intellisense auf dem Namespace-Tag ic, als ob es keinen solchen Namespace gibt. Allerdings habe ich nicht bekomme den Fehler, dass der CLR-Namespace nicht gefunden werden konnte, was ich tun, wenn ich versuche, einen nicht existierenden Namespace zu verwenden.

jedoch im Konstruktor für dieses Fenster, kann ich dies tun:

var x = new Microsoft.Expression.Interactivity.Core.CallMethodAction(); 

Das kompiliert und läuft gut. Wie ist das überhaupt möglich?

+1

Haben Sie versucht, den Verweis auf Microsoft.Expression.Interactions.dll zu entfernen und erneut hinzuzufügen? – surfen

+0

@surfen: Sie brauchen '* .Interactivity.dll' ... –

+0

@ H.B. Wie soll ich die Blend-Klassen verwenden, wenn ich nicht auf die Blend-Assembly referenziere? –

Antwort

3

Versuchen zu entfernen und erneut hinzufügen Verweis auf Microsoft.Expression.Interactions.dll und *.Interactivity.dll

Es mir einmal passiert ist, aber ich weiß nicht, warum. So habe ich es gelöst.

Verwandte Themen