inn*_*nom 1 c# data-binding maui
这是我的字符串:
public string EmptyViewText { get; set; } = "Please input a bin id first!*";
Run Code Online (Sandbox Code Playgroud)
我有一个简单的命令:
public async Task Entry(string barcode)
{
MainThread.BeginInvokeOnMainThread(() =>
{
EmptyViewText = "Loading data...*";
OnPropertyChanged();
});
}
Run Code Online (Sandbox Code Playgroud)
这是触发的。
这是我的课:
public partial class BinViewModel : ObservableObject
Run Code Online (Sandbox Code Playgroud)
绑定本身有效,正如我确实看到我的价值观一样。但是当我更改代码中的值时,什么也没有发生。
绑定非常简单:
<Label Text="{Binding EmptyViewText}" />
Run Code Online (Sandbox Code Playgroud)
然而,如果我禁用该字符串并重新启用它(重新渲染它),它确实会显示新的和更正的文本。
这里有什么问题?
您的代码正在调用OnPropertyChanged()而不带参数。无论该方法在哪里,它的定义可能类似于:
protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke( this, new PropertyChangedEventArgs(propertyName));
}
Run Code Online (Sandbox Code Playgroud)
本例中的调用者Entry不是EmptyViewText。它将触发属性更改事件,但属性错误。
看看如果使用显式参数调用它是否会产生影响:
public async Task Entry(string barcode)
{
MainThread.BeginInvokeOnMainThread(() =>
{
EmptyViewText = "Loading data...*";
OnPropertyChanged(nameof(EmptyViewText));
});
}
Run Code Online (Sandbox Code Playgroud)