Ich bin neu in Avalonia/ WPF-, XAML- und Desktop -Entwicklung im Allgemeinen, also bitte verzeihen und klären Sie alle verwandten Missverständnisse, die ich zeige. Ich werde weiterhin die verfügbaren Dokumentation untersuchen, aber es fällt mir schwer, Material zu finden, das sich mit dem Punkt befasst, an dem ich stehe. Ich vertraut mit dem Paket von Microsoft.Extensions. Ich denke, ich habe die Dinge konzeptionell herausgefunden, um Dienste und ViewModels zu registrieren und Konstruktoren für diese Klassen angemessen einzurichten, so dass das Rahmen Abhängigkeiten in diese Klassen zur Instanziierung injiziert. Wo ich jedoch stecken bleibe, ist die Implementierung der Konstruktorinjektion für View-Klassen.
// App.axaml.cs
public partial class App : Application
{
private IServiceProvider _services;
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
ConfigureServiceProvider();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = _services.GetService();
}
base.OnFrameworkInitializationCompleted();
}
private void ConfigureServiceProvider()
{
var services = ConfigureServices();
_services = services.BuildServiceProvider();
}
private static IServiceCollection ConfigureServices()
{
var services = new ServiceCollection();
services.AddTransient();
services.AddTransient();
return services;
}
}
< /code>
Das Ziel besteht dann darin, die MainWindowViewModel-Klasse über den Konstruktor in die MainWindow-Klasse zu injizieren und dieses Argument der DataAcontext-Eigenschaft der MainWindow-Ansichtsklasse zuzuweisen: < /p>
">"> ">"> ">"> ">">// MainWindow.axaml.cs
public partial class MainWindow : Window
{
public MainWindow(MainWindowViewModel viewModel)
{
DataContext = viewModel;
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
< /code>
Dies führt jedoch dazu, dass der folgende Fehler erhöht wird: < /p>
MainWindow.axaml(1, 2): [XAMLIL] Unable to find public constructor for type MyApp.Client:MyApp.Client.Views.MainWindow() Line 1, position 2.
< /code>
Es scheint, dass die Ansicht nicht ohne die Existenz eines parameterlosen Konstruktors instanziiert werden kann. Dies scheint jedoch die Konstruktorinjektion zu verhindern. Ich bin auf eine Reihe von Beispielen gestoßen, bei denen ViewModels nicht beim Service-Container registriert sind und stattdessen direkt im Ansichtskonstruktor instanziiert und der DataContext-Eigenschaft zugeordnet sind. Ich würde es vorziehen, diesen Ansatz zu vermeiden. Tutorial, in dem zeigt, wie ViewModels über Konstruktor ordnungsgemäß in Ansichten injiziert werden kann? Ist das möglich? Gibt es etwas, das ich in der Datei mainWindow.axaml [url=viewtopic.php?t=12045]ändern[/url] kann, um das gewünschte Verhalten zu ermöglichen? Vielen Dank für Ihre und immer wieder, ich würde es sehr schätzen, die Klärung von Missverständnissen zu schätzen, die ich möglicherweise habe.// MainWindow.axaml
Ich bin neu in Avalonia/ WPF-, XAML- und Desktop -Entwicklung im Allgemeinen, also bitte verzeihen und klären Sie alle verwandten Missverständnisse, die ich zeige. Ich werde weiterhin die verfügbaren Dokumentation untersuchen, aber es fällt mir schwer, Material zu finden, das sich mit dem Punkt befasst, an dem ich stehe. Ich vertraut mit dem Paket von Microsoft.Extensions. Ich denke, ich habe die Dinge konzeptionell herausgefunden, um Dienste und ViewModels zu registrieren und Konstruktoren für diese Klassen angemessen einzurichten, so dass das Rahmen Abhängigkeiten in diese Klassen zur Instanziierung injiziert. Wo ich jedoch stecken bleibe, ist die Implementierung der Konstruktorinjektion für View-Klassen.[code]// App.axaml.cs public partial class App : Application { private IServiceProvider _services;
public override void Initialize() { AvaloniaXamlLoader.Load(this); }
public override void OnFrameworkInitializationCompleted() { ConfigureServiceProvider();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { desktop.MainWindow = _services.GetService(); }
private static IServiceCollection ConfigureServices() { var services = new ServiceCollection();
services.AddTransient(); services.AddTransient();
return services; } } < /code> Das Ziel besteht dann darin, die MainWindowViewModel-Klasse über den Konstruktor in die MainWindow-Klasse zu injizieren und dieses Argument der DataAcontext-Eigenschaft der MainWindow-Ansichtsklasse zuzuweisen: < /p> ">"> ">"> ">"> ">">// MainWindow.axaml.cs public partial class MainWindow : Window { public MainWindow(MainWindowViewModel viewModel) { DataContext = viewModel; InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif }
< /code> Dies führt jedoch dazu, dass der folgende Fehler erhöht wird: < /p> MainWindow.axaml(1, 2): [XAMLIL] Unable to find public constructor for type MyApp.Client:MyApp.Client.Views.MainWindow() Line 1, position 2. < /code> Es scheint, dass die Ansicht nicht ohne die Existenz eines parameterlosen Konstruktors instanziiert werden kann. Dies scheint jedoch die Konstruktorinjektion zu verhindern. Ich bin auf eine Reihe von Beispielen gestoßen, bei denen ViewModels nicht beim Service-Container registriert sind und stattdessen direkt im Ansichtskonstruktor instanziiert und der DataContext-Eigenschaft zugeordnet sind. Ich würde es vorziehen, diesen Ansatz zu vermeiden. Tutorial, in dem zeigt, wie ViewModels über Konstruktor ordnungsgemäß in Ansichten injiziert werden kann? Ist das möglich? Gibt es etwas, das ich in der Datei mainWindow.axaml [url=viewtopic.php?t=12045]ändern[/url] kann, um das gewünschte Verhalten zu ermöglichen? Vielen Dank für Ihre und immer wieder, ich würde es sehr schätzen, die Klärung von Missverständnissen zu schätzen, die ich möglicherweise habe.// MainWindow.axaml
Ich erstelle eine Javafx + Spring -Boot -Anwendung mit dem MVVM -Muster. Ein WizardViewModel fährt eine Sequenz von Schritten (STEP_ONE → STEP_TWO bis StepViewModel macht dies derzeit, wenn es...
Ich implementiere ein Nachrichtenübersetzermuster mit Apache Camel, um Nachrichten aus einem erholsamen Endpunkt zu konsumieren und sie weiter an einen AMQP -Endpunkt zu senden.
Ich versuche, die Bindung von AvaloniaUI-Eigenschaften zu verstehen (ich habe fundierte WPF-Hintergrundkenntnisse). Ich habe bereits nach möglichen Duplikaten gesucht, aber keine Lösung für mein...
Ich stelle meine Funktion App über VS -Code ein und ich zurücklieg oft zur traditionellen Azure -Funktionsstruktur, da meine Funktionen, wenn ich das dekoratorbasierte Modell verwende....
Wie können große Unternehmen oder große Systeme mehrere Ansichten (Bildschirme oder Benutzeroberflächen) für ihre verschiedenen Benutzertypen haben, beispielsweise eine Benutzeroberfläche für das...