Ich habe eine DLL, die ein benutzerdefiniertes Avalonia-Steuerelement sowie dessen Standardstil und -ressourcen enthält.
Ich kann die DLL so dynamisch laden und das Steuerelement ohne Probleme verwenden:
Code: Select all
var basePath = Directory.GetCurrentDirectory();
var dll = Assembly.LoadFile(Path.Combine(basePath, "Components.dll"));
foreach (var type in dll.GetExportedTypes())
{
if (type.IsAssignableTo(typeof(IComponentPlugin)))
{
var instance = Activator.CreateInstance(type);
if (instance is IComponentPlugin plugin)
{
// Do Stuff
}
}
}
Jetzt möchte ich den Standardstil und die Standardressourcen zu meinen Anwendungen hinzufügen, und das ist irgendwie sehr schwierig.
Ich kann einen StyleInclude und ResourceInclude aus meiner DLL, indem ich dies in IComponentPlugin einfüge:
Code: Select all
public ResourceInclude? GetResources()
{
var uri = new Uri("avares://DefaultResources.axaml");
return new ResourceInclude(uri) { Source = uri };
}
public StyleInclude? GetStyle()
{
var uri = new Uri("avares://DefaultStyle.axaml");
return new StyleInclude(uri) { Source = uri };
}
Aber wenn ich versuche, es zu den Ressourcen meiner Anwendung hinzuzufügen, beschwert sich AvaloniaXamlLoader. „Für avares://DefaultResources.axaml/ (baseUri: avares://DefaultResources.axaml/) wurde kein vorkompiliertes es mit AvaloniaRuntimeXamlLoader aus dem Avalonia.Markup.Xaml.Loader-Paket:
Code: Select all
public Stream? GetResources()
{
return AssetLoader.Open(new Uri("avares://DefaultResources.axaml"));
}
Aber dann erhalte ich eine FileNotFoundException „Die Ressource avares://DefaultResources.axaml/ konnte nicht gefunden werden.“ Ich habe es auch mit „avares://Components/DefaultResources.axaml“ versucht, ohne Erfolg.
Wie füge ich die Ressourcen meiner Anwendung hinzu? ?
Ich habe eine DLL, die ein benutzerdefiniertes Avalonia-Steuerelement sowie dessen Standardstil und -ressourcen enthält.
Ich kann die DLL so dynamisch laden und das Steuerelement ohne Probleme verwenden:
[code]var basePath = Directory.GetCurrentDirectory();
var dll = Assembly.LoadFile(Path.Combine(basePath, "Components.dll"));
foreach (var type in dll.GetExportedTypes())
{
if (type.IsAssignableTo(typeof(IComponentPlugin)))
{
var instance = Activator.CreateInstance(type);
if (instance is IComponentPlugin plugin)
{
// Do Stuff
}
}
}
[/code]
Jetzt möchte ich den Standardstil und die Standardressourcen zu meinen Anwendungen hinzufügen, und das ist irgendwie sehr schwierig.
Ich kann einen StyleInclude und ResourceInclude aus meiner DLL, indem ich dies in IComponentPlugin einfüge:
[code]public ResourceInclude? GetResources()
{
var uri = new Uri("avares://DefaultResources.axaml");
return new ResourceInclude(uri) { Source = uri };
}
public StyleInclude? GetStyle()
{
var uri = new Uri("avares://DefaultStyle.axaml");
return new StyleInclude(uri) { Source = uri };
}
[/code]
Aber wenn ich versuche, es zu den Ressourcen meiner Anwendung hinzuzufügen, beschwert sich AvaloniaXamlLoader. „Für avares://DefaultResources.axaml/ (baseUri: avares://DefaultResources.axaml/) wurde kein vorkompiliertes es mit AvaloniaRuntimeXamlLoader aus dem Avalonia.Markup.Xaml.Loader-Paket:
[code]public Stream? GetResources()
{
return AssetLoader.Open(new Uri("avares://DefaultResources.axaml"));
}
[/code]
Aber dann erhalte ich eine FileNotFoundException „Die Ressource avares://DefaultResources.axaml/ konnte nicht gefunden werden.“ Ich habe es auch mit „avares://Components/DefaultResources.axaml“ versucht, ohne Erfolg.
Wie füge ich die Ressourcen meiner Anwendung hinzu? ?