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 Problem gefunden.
Ich habe ein Benutzersteuerelement erstellt, das ist einfach:
public partial class UserBox : UserControl
{
public string BoxInfo
{
get { return (string)GetValue(BoxInfoProperty); }
set { SetValue(BoxInfoProperty, value); }
}
public UserBox()
{
InitializeComponent();
this.DataContext = this;
}
}
und die Axaml:
Jetzt kann ich dieses Steuerelement im Hauptfenster wie folgt verwenden:
Das funktioniert.
Ich kann ihm einen Namen geben:
und verwenden Sie es dann im Code:
if (this.GetControl("MyBox") is UserBox ub) ub.BoxInfo = "Some text";
Und das funktioniert auch.
Aber wenn ich dann eine Eigenschaft im Ansichtsmodell des Hauptfensters definiere:
private string _mainBoxMessage = string.Empty;
public string MainBoxMessage
{
get => this._mainBoxMessage ;
set
{
this._mainBoxMessage = value;
OnPropertyChanged(nameof(MainBoxMessage ));
}
}
Dann in Axaml des Hauptfensters:
Und im Hauptfenstercode:
if (this.DataContext is MainWindowViewModel dc) dc.MainBoxMessage = "Some bound text";
Das funktioniert nicht.
Ich habe versucht, x:CompileBindings auf true zu setzen, es hat auch nicht geholfen.
Was fehlt mir?
Übrigens, wenn ich ein weiteres Steuerelement hinzufüge, so:
sein Inhalt wird entsprechend dem Wert von MainBoxMessage festgelegt.
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 Problem gefunden. Ich habe ein Benutzersteuerelement erstellt, das ist einfach: public partial class UserBox : UserControl { public string BoxInfo { get { return (string)GetValue(BoxInfoProperty); } set { SetValue(BoxInfoProperty, value); } }
public UserBox() { InitializeComponent(); this.DataContext = this; } }
und die Axaml:
Jetzt kann ich dieses Steuerelement im Hauptfenster wie folgt verwenden:
Das funktioniert. Ich kann ihm einen Namen geben:
und verwenden Sie es dann im Code: if (this.GetControl("MyBox") is UserBox ub) ub.BoxInfo = "Some text";
Und das funktioniert auch. Aber wenn ich dann eine Eigenschaft im Ansichtsmodell des Hauptfensters definiere: private string _mainBoxMessage = string.Empty;
public string MainBoxMessage { get => this._mainBoxMessage ; set { this._mainBoxMessage = value; OnPropertyChanged(nameof(MainBoxMessage )); } }
Dann in Axaml des Hauptfensters:
Und im Hauptfenstercode: if (this.DataContext is MainWindowViewModel dc) dc.MainBoxMessage = "Some bound text";
Das funktioniert nicht. Ich habe versucht, x:CompileBindings auf true zu setzen, es hat auch nicht geholfen. Was fehlt mir? Übrigens, wenn ich ein weiteres Steuerelement hinzufüge, so:
sein Inhalt wird entsprechend dem Wert von MainBoxMessage festgelegt.
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...
Ich arbeite an einer Avaloniaui -Anwendung, in der ich abgerundete Tasten mit Bildern oder Loop -Videos habe. Das Bild steuert die abgerundeten Ränder und seine eigenen Grenzen perfekt, aber...
Ich stehe vor einem Problem, bei dem eine ComboBox in einem UserControl ihren ausgewählten Wert nicht aktualisiert, wenn im Dropdown-Menü auf ein Element geklickt wird. Das...