Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
eigenes WPF-Control in anderes Control einfügen (VS2008)
gehho
myCSharp.de - Member



Dabei seit:
Beiträge: 87
Herkunft: Bonn

Themenstarter:

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

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von gehho am .
private Nachricht | Beiträge des Benutzers
.tim
myCSharp.de - Member



Dabei seit:
Beiträge: 332
Herkunft: Mainz

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
nitronic
myCSharp.de - Member

Avatar #avatar-1597.jpg


Dabei seit:
Beiträge: 354
Herkunft: Österreich

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
gehho
myCSharp.de - Member



Dabei seit:
Beiträge: 87
Herkunft: Bonn

Themenstarter:

beantworten | zitieren | melden

Zitat von nitronic
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.).
Zitat von nitronic
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.
private Nachricht | Beiträge des Benutzers
nitronic
myCSharp.de - Member

Avatar #avatar-1597.jpg


Dabei seit:
Beiträge: 354
Herkunft: Österreich

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von nitronic am .
.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup
private Nachricht | Beiträge des Benutzers
gehho
myCSharp.de - Member



Dabei seit:
Beiträge: 87
Herkunft: Bonn

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers