Laden...

eigenes WPF-Control in anderes Control einfügen (VS2008)

Erstellt von gehho vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.585 Views
G
gehho Themenstarter:in
87 Beiträge seit 2005
vor 15 Jahren
eigenes WPF-Control in anderes Control einfügen (VS2008)

Hallo zusammen,

ich würde gerne ein selbst erstelltes WPF-Control in ein anderes selbst erstelltes WPF-Control einfügen. Die Controls befinden sich im gleichen Projekt und im gleichen Namespace. Wenn ich aber alles kompiliere, erscheint keins der Controls in der VS-Toolbox. Daher habe ich versucht, es manuell im XAML-Code einzufügen. Dort bekomme ich aber die folgende Fehlermeldung:

The tag 'meinControlName' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'.

Nach ein bisschen googlen habe ich dann herausgefunden, dass man in XAML wohl erst den Namespace mit folgendem Befehl definieren muss:

...xmlns:custom="clr-namespace:MeinNamespace;assembly=MeineAssembly"...

Da Namespace und Assembly aber gleich sind, sollte das bei mir doch eigentlich nicht nötig sein, oder?! Aber egal, ich hab es mal eingefügt (mit und ohne Assembly), aber dann schmeisst er im Designer eine "Unhandled Exception", weil er eine andere Assembly im Projekt angeblich nicht findet. Wenn ich die xmlns-Zeile wieder rausnehme, klappt es wieder.

EDIT: Die Fehlermeldung ist folgende:

Could not load type '<PrivateImplementationDetails>{CDAAE5B0-C78E-48CF-B204-9A54A0F2BDB9}+__StaticArrayInitTypeSize=68' from assembly 'MeinAssemblyName, Version=1.0.0.6, Culture=neutral, PublicKeyToken=3307896b07343f54'.
   at System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase)
   at System.UnitySerializationHolder.GetRealObject(StreamingContext context)

   at MS.Internal.Host.Isolation.IsolatedDesigner.BootstrapProxy.LoadDesigner(IsolatedDesignerFactory factory, IsolatedView view)
   at MS.Internal.Host.Isolation.IsolatedDesigner.Load()
   at MS.Internal.Designer.DesignerPane.LoadDesignerView()

Die Fehlermeldung erscheint nur im Visual Studio Designer und das Kompilieren ist trotzdem möglich. In Expression Blend zeigt er das Control sogar ohne Problem an - nur in VS eben nicht. Ich würde aber ganz gerne nur in VS arbeiten, ohne Blend...

Im Code, also in der xaml.cs-Datei findet er die Klasse "meinControlName" sofort, ohne dass ich irgendwas machen muss. Ich könnte das Control jetzt natürlich im Code einfügen, aber dann wird mir das Control nicht im Designer angezeigt.

Hat jemand eine Idee, woran die Probleme liegen bzw. wie ich mein Control endlich eingefügt bekomme? Ich hänge da jetzt schon den ganzen Vormittag dran und verzweifle langsam.

Den Thread WPF - UserControl hinzufügen habe ich bereits gefunden und gelesen, aber wie oben beschrieben bringt das bei mir nur weitere Fehlermeldungen...

Bin dankbar für jede Hilfe!
gehho.

.
332 Beiträge seit 2006
vor 15 Jahren

Du musst einen Namespace definieren. Es handelt sich zwar um das gleiche Assembly und ggf. Namespace aber in WPF ist das etwas anders.

Wenn du dort keinen Prefix bzw. Namespace angibst, wird der std. Namespace genutzt und das ist: http://schemas.microsoft.com/winfx/2006/xaml/presentation

Um dir weiter helfen zu können, müsstest du nochmal genau beschreiben, wann und welcher Fehler bei dir erscheint.

354 Beiträge seit 2004
vor 15 Jahren

Also einen CLR-Namespace musst du in diesem Fall immer angeben. Da sich das Control jedoch in der gleichen Assembly befindet, kannst du den "assembly="-Part weglassen.

Zu deiner Exception: Hast du auch eine InnerException?

.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup

G
gehho Themenstarter:in
87 Beiträge seit 2005
vor 15 Jahren

Also einen CLR-Namespace musst du in diesem Fall immer angeben. Da sich das Control jedoch in der gleichen Assembly befindet, kannst du den "assembly="-Part weglassen.

OK. Das stimmt natürlich. Aber wie gesagt: ich hab's eingefügt, und dann kam der andere Fehler (s.o.).

Zu deiner Exception: Hast du auch eine InnerException?

Nein. Die Exception kommt ja auch nicht beim Starten des Programms, sondern wird mir einfach im VS Designer angezeigt. Da hab ich keine Möglichkeit, eine InnerException rauszubekommen.

Es sieht mir mittlerweile ganz nach einem Fehler in VS aus. In Expression Blend funktioniert es schliesslich, und kompilieren ist auch kein Problem. Wahrscheinlich ist der WPF-Designer in VS noch nicht wirklich ausgereift...

Danke aber auf jeden Fall!
gehho.

354 Beiträge seit 2004
vor 15 Jahren

Cider hat durchaus noch seine Macken.

Kannst du das Control herausgeben, oder ist es für ein Unternehmen? Wenn du es rausgeben kannst/darfst, dann würde ich es mir ansehen.

.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup

G
gehho Themenstarter:in
87 Beiträge seit 2005
vor 15 Jahren

Danke fürs Angebot, aber das Control kann ich leider nicht rausgeben. Ich vermute vor allem, dass es nicht an dem Control selber liegt, sondern eher an der gesamten Assembly. Jedenfalls hatte ich vorher auch mal eine andere Fehlermeldung, wo er explizit Probleme mit einem Teilprojekt hatte. Jetzt schreibt er nur noch "PrivateImplementationDetails".

Naja, ich bastel jetzt die Controls eben in der GUI und mache den Code in VS. So ist es ja eigentlich auch gedacht, aber nicht jede Firma kann sich eigene Designer leisten. 😉