Die AvaloniaUI UserControl-Eigenschaft kann nicht an eine andere Eigenschaft gebunden werdenC#

Ein Treffpunkt für C#-Programmierer
Guest
 Die AvaloniaUI UserControl-Eigenschaft kann nicht an eine andere Eigenschaft gebunden werden

Post by Guest »

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 static readonly StyledProperty BoxInfoProperty =
AvaloniaProperty.Register(nameof(BoxInfo), defaultValue: string.Empty, defaultBindingMode: Avalonia.Data.BindingMode.OneWay);

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post