绑定值 while 或 for 循环

Binding values while or for loop

根据我的直觉,如果我在循环中绑定一个值,我相信 UI 会自动更新。
这是我的测试代码:

绑定

private string _client1 {get; set;}
public string client1
{
    get => _client1;
    set
    {
        _client1 = value;
        RaisePropertyChanged(nameof(client1));
    }
}

函数

public async void UpdateUI()
{
    await Task.Run(() =>
    {
        DispatcherHelper.CheckBeginInvokeOnUI(async () =>
        {
            for (int i = 0; i < 10; i++)
            {
                _client1 = i.ToString();
                RaisePropertyChanged(_client1);

                await Task.Delay(200);
            }
        });
    }).ConfigureAwait(false);
}

结果
0 在 UI 中显示且未更改。

预期结果
0 1 2 ... 10

我希望在 UI 中连续更改值。这段代码有什么问题?

如果控件绑定到 client1 属性,那么这就是您应该更改的内容,而不是支持字段 _client1:

client1 = i.ToString();

并且由于 client1 的 setter 已经调用了 RaisePropertyChanged,因此您的循环中不需要这一行:

RaisePropertyChanged(_client1);