编辑:使问题更容易。
模型
public class Human
{
public string Name { get; set; }
}
ViewModel
public class HumanViewModel : INotifyPropertyChanged
{
private Human human;
public HumanViewModel()
{
human = new Human();
}
public string TxtHumanName
{
get => Human.Name;
set
{
Human.Name = value;
InvokePropertyChanged("Name");
}
}
private void InvokePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
在我的XAML中,我需要2个texbox,即
Human1:[] <-humanName1txtBox
Human2:[] <-humanName2txtBox
在我的xaml.cs文件中,我将创建将为人类分配名称的Task。 (据我了解,这类代码应该在其他地方)。
public Task SetName(HumanViewModel humanVM, string name)
{
humanVM.TxtHumanName = name;
return Task.CompletedTask;
}
想象一下,多次运行此任务集名称。我该如何分配它,以便它第一次更新humanName1txtBox,第二次更新humanName2txtBox
答案 0 :(得分:0)
当您重复执行某些操作时,您应该考虑一个itemcontrol,并将这些模板模板到UI中。
将项源绑定到可观察的集合rowvm,其中rowvm是每行的视图模型。它被模板化到文本框或任何您需要的内容中,并且逻辑进入rowvm。因此,它“知道”要更新的内容,因为它本身就可以。
关于MVVM的非常简单的介绍文章。您可能想要的不仅仅是行视图模型的字符串,更复杂的东西:
https://social.technet.microsoft.com/wiki/contents/articles/32164.wpf-mvvm-step-by-step-2.aspx
不确定确切要做什么,但是会有类似的东西
public rowVM : BaseViewModel
{
private Task<result> doSomething
{
…..
}
public string WhateverYourTextIs // propfull
}
每个视图都以模板显示在行中。
每当您要执行流程时,就启动该任务并等待它。返回结果,然后您就可以对该结果执行任何操作。