2015-08-19 17 views
7

Ich habe zwei ähnliche Projekte. Eines ist ein Silverlight-Projekt und das andere ein WPF. Beide enthalten einige Namespaces und viele benutzerdefinierte Benutzersteuerelemente.Warum sucht XAML (WPF) nicht in meinen XML-Namespacedefinitionen für die Steuerelemente?

Da die Steuerelemente über viele Namespaces verteilt sind, muss ich einige Namespaces definieren, wenn ich sie verwende. Also begann ich zu define the XML namespaces in the AssemblyInfo.cs:

[assembly: XmlnsPrefix("http://ui.example.com/xaml/touch", "cui")] 
[assembly: XmlnsDefinition("http://ui.example.com/xaml/touch", "example_ui.controls")] 
[assembly: XmlnsDefinition("http://ui.example.com/xaml/touch", "example_ui.themes")] 

Jetzt habe ich nur einen Namensraum in jeder Datei definieren:

xmlns:cui="http://ui.example.com/xaml/touch" 

leider nur Werke in Silverlight. Meine Frage ist, wie bekomme ich das in einem WPF-Projekt zu arbeiten?

Im WPF-Projekt bekomme ich Fehler wie folgt aus:

Error 5 The tag 'LookUpField' does not exist in XML namespace 
    'http://ui.example.com/xaml/touch'. Line 7 Position 14. D:\src\prototype\lookup-control\lookup-control\MainWindow.xaml 7 14 lookup-control 
+0

verwenden Sie die gleichen Baugruppen für WPF und Silverlight? Vielleicht kann WPF Silverlight-Steuerelemente nicht verwenden – Domysee

+0

Nein, ich habe dies als ein minimales Beispiel getestet. Zwei Projekte, ein silverlight und ein wpf one. Sie sind in keiner Weise verknüpft. Beide haben ein benutzerdefiniertes Benutzersteuerelement und eine Möglichkeit, es anzuzeigen. – Robin

+0

Ich spreche über die eigentlichen Projekte in der Post, weil ich der Frage einen Kontext/Hintergrund geben wollte. – Robin

Antwort

1

althougth das Tutorial arbeitete für Silverlight, ich glaube, es ist für WPF ungenau sein können. Siehe akzeptierte Antwort here.

Ich habe eine separate Assembly mit benutzerdefinierten Steuerelementen in WPF und ich bin in der Lage, das XmlnsDefinition Attribut ohne ein Problem zu verwenden. Ich denke, das Problem liegt innerhalb der Definitionen, die existieren müssen, bevor die Assembly erstellt wird. Obwohl die Steuerelemente in Ihrem Designer angezeigt werden, kann es nicht erstellt werden, da der Compiler die Definitionen benötigt, während das XAML in BAML kompiliert wird, die built into the assembly at a later point sind.

bearbeiten

ich eine andere WPF-Benutzersteuer Bibliothek erstellt und hinzugefügt die gleichen XmlnsDefinition s Sie verwenden, die Referenz der Benutzersteuerung Bibliothek meines WPF-Anwendungsprojekt, die verwendeten <cui:UserControl1 /> in meinem MainWindow.xaml und hatte keine Fehler .