Laden...

Von UserControl einer anderen Assembly ableiten

Erstellt von Lector vor 15 Jahren Letzter Beitrag vor 14 Jahren 7.420 Views
L
Lector Themenstarter:in
862 Beiträge seit 2006
vor 15 Jahren
Von UserControl einer anderen Assembly ableiten

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?

5.658 Beiträge seit 2006
vor 15 Jahren

Du mußt den Namespace auch in der XAML-Datei referenzieren.
Christian

Weeks of programming can save you hours of planning

L
Lector Themenstarter:in
862 Beiträge seit 2006
vor 15 Jahren

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.

5.658 Beiträge seit 2006
vor 15 Jahren

Weeks of programming can save you hours of planning

L
Lector Themenstarter:in
862 Beiträge seit 2006
vor 15 Jahren

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.

925 Beiträge seit 2004
vor 14 Jahren

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.