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
Von UserControl einer anderen Assembly ableiten
Lector
myCSharp.de - Member



Dabei seit:
Beiträge: 862

Themenstarter:

Von UserControl einer anderen Assembly ableiten

beantworten | zitieren | melden

Hallo,

Ich schreibe eine WPF-Anwendung und habe diese in 2 Assemblys gegleidert.
Eine ausführbare .exe-Datei und eine dll welche allgemeine Controls enthält.
Nun möchte ich in meinem .exe-Projekt eine Klasse erstellen welche von einem UserControl in der dll erbt. Ich stoße beim instanzieren allerdings immer auf eine XAMLParseException welche im InitializeComponent des Basis-User-Controls auftritt:

"Die Komponente \"UserControlInExe\" verfügt nicht über eine Ressource, die vom URI \"/DLLProjekt;component/controls/UserControlInDll.xaml\" identifiziert wird."

Ich verwende in der XAML-Datei der BasisControls allerding keine einzige Ressource. Der Fehler tritt auf sobald ich in dem BasisControl eine XAML-Datei habe, auch wenn diese bis auf die Vorlage vom VS leer ist.

Sobald ich das Basis-User-Control in die Hauptanwendung kopiere funktioniert alles. Ich möchte jedoch nicht alles in eine .exe-Datei stopfen.

Kennt jemand vll. einen Lösungsansatz?
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Du mußt den Namespace auch in der XAML-Datei referenzieren.
Christian
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
Lector
myCSharp.de - Member



Dabei seit:
Beiträge: 862

Themenstarter:

beantworten | zitieren | melden

Ich habe nur eine XAML-Datei in meinem DLL-Projekt. Das UserControl in der .exe hat nur eine .cs-Datei.
Mit den Namespaces scheint es nichts zu tun zu haben denn es funktioniert auch nicht wenn beide Controls den selben benutzen.
Sind beide in der selben Assembly funktioniert es auch wenn die Namespaces unterschiedlich sind.
In dem Fenster in dem ich das UserControl verwende ist sowohl der Namespace der Anwendung (exe) also auch der der Controls (dll) eingebunden.
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Gewusst wie: Importieren eines Namespace in XAML
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
Lector
myCSharp.de - Member



Dabei seit:
Beiträge: 862

Themenstarter:

beantworten | zitieren | melden

Der Namespace ist nicht das Problem. Ich habe schon viele eigene Controls verwendet.

Mein Control in der DLL sieht so aus:

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="controls.BasisControl"
    x:Name="control" Loaded="UserControl_Loaded" Unloaded="UserControl_Unloaded">
...
</UserControl>


public partial class ImageViewer3D : UserControl
{
...
}

Mein abgeleitetes Control hat nur eine .cs-Datei:


namespace myApplication
{
  internal class MyControl : controls.BasisControl
  {
    ...
  }
}

In meinem Window kann ich das BasisControl ohne Probleme einbinden. Und wenn mein abgeleitetes Control nicht vom Basis-Control erbt funktioniert auch das. Es liegt also nicht am Namespace.

Kann es sein dass die XAML-Datei in der DLL beim Ableiten nicht gefunden wird? Die Exception kommt im InitializeComponent() des BasisControls.
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 925
Herkunft: Scheeßel

beantworten | zitieren | melden

Hab gerade ein ähnliches Problem. Gestern ging's noch... Funktioniert nicht mehr, seit ich die Ausgabe-Pfade aller Assemblies auf den selben Ordner gelegt habe. Biege ich das zurück, funktioniert's wieder.
private Nachricht | Beiträge des Benutzers