我用MVVM模式更新界面,增加延时后界面无反应。单次执行后可以更新界面。不知道问题出在哪里?
界面设置如下:
<TextBox x:Name="txtbloc" Grid.Row="0" Width="200" Height="100" Text="{Binding m_person.Name, Mode=OneWay}" Background="#FF9FAF40"></TextBox>
<TextBox Width="200" Height="100" Text="{Binding m_person.Age, Mode=TwoWay ,NotifyOnSourceUpdated=True}" Margin="31,180,569,205" />
<Button x:Name="UpdateBtn" Content="更新" Width="300" Command="{Binding ChangeCommand}" FontSize="24" Margin="230,34,270,385" />
对应的代码如下:
public class ViewModel : MVVMObject
{
public ICommand ChangeCommand { get; set; }
public Person m_person { get; set; } = new Person{ Name="GG",Age=4};
public ViewModel()
{
ChangeCommand = new CommandBase(()=>
{
Hellow();
});
}
private void Hellow()
{
while (true) {//增加无限循环后无法正常更新界面
Task.Delay(1000).GetAwaiter().GetResult();
Random rnd = new Random();
m_person.Age = rnd.Next();
m_person.Name = "ffff" + rnd.Next();
}
}
}