.NET MAUI PropertyChanged Event aktualisiert die XAML -Ansicht nichtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 .NET MAUI PropertyChanged Event aktualisiert die XAML -Ansicht nicht

Post by Anonymous »

Ich erstelle eine Maui Blazor -App, aber ich muss einen QR -Leser implementieren, der es erfordert, sie in XAML zu verwenden. Bevor ich den QR -Leser implementiert habe, habe ich getestet, wie XAML -Bindungen mithilfe eines einfachen XAML -Etiketts verwendet werden, aber ich kann das Etikett nicht zum Aktualisieren bringen, wenn sich die Eigenschaft für Backing App State Service Class geändert hat. Das Etikett erhält jedoch den Anfangswert, daher gehe ich davon aus, dass die Bindung funktioniert. Wenn die Eigenschaft von meiner Blazor-Schnittstelle geändert wird, kann ich sehen, dass die On-Propertychanged-Methode aufgerufen wird und die Werte korrekt sind. Mauiprogramm: < /p>
namespace MyNamespace;

public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();

builder
.UseMauiApp()
.UseBarcodeReader()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
});

builder.Services.AddScoped(sp => new HttpClient
{
Timeout = TimeSpan.FromMinutes(10)
});
builder.Services.AddSingleton();
builder.Services.AddBlazorWebViewDeveloperTools();
builder.Services.AddMauiBlazorWebView();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddAuthorizationCore();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();

string dbPath = Path.Combine(FileSystem.AppDataDirectory, "LocalDb.db3");
builder.Services.AddDbContext(options => options.UseSqlite($"Filename={dbPath}"));

return builder.Build();
}
}
< /code>
Dies ist meine App -Status -Serviceklasse: < /p>
namespace MyNamespace.Data
{

public class AppStateService : INotifyPropertyChanged
{
//My global app state management
private SortedLocalDb _db;

public AppStateService(SortedLocalDb db)
{
this.AppState = new AppState();
_db = db;
}

public string _CardType = "settings";
public string CardType
{
get => _CardType;
set
{
if (_CardType != value)
{
_CardType = value;
OnPropertyChanged(); // reports this property
}
}
}

public event Action OnChange;
public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged([CallerMemberName] string name = "") =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));

public void NotifyStateChanged() => OnChange?.Invoke();

//removed other code for brevity but should be unrelated...

}

}
< /code>
Hier ist meine mainpage.xaml.cs: < /p>
using MyNamespace.Data;
using System.Globalization;

namespace MyNamespace;

public partial class MainPage : ContentPage
{
public MainPage(AppStateService AppStateService)
{
InitializeComponent();

this.BindingContext = AppStateService;
}
}
< /code>
Dies ist die mainpage.xaml: < /p>













< /code>

Danke im Voraus! < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post