Я начинаю в Caliburn.Micro, поэтому, если что-то неясно или эта реализация неверна, сообщите мне. У меня есть DataGridViewModel
со свойствами Name
, Data
set property from running thread to ViewModel in Caliburn Micro
class DataGridViewModel : Screen
{
private char name;
public char Name
{
get { return name; }
set
{
name = value;
this.NotifyOfPropertyChange(() => Name);
}
}
private DataTable data;
public DataTable Data
{
get { return data; }
set
{
data = value;
this.NotifyOfPropertyChange(() => Data);
}
}
}
и MainViewModel
со свойствами Fitness
и GenerationCout
. В MainView
есть кнопка, которая запускает новый поток моего класса Genetic
.
public class MainViewModel : Conductor<Screen>.Collection.AllActive
{
private Genetic genetic;
private double fitness;
public double Fitness
{
get { return fitness; }
set
{
fitness = value;
NotifyOfPropertyChange(() => Fitness);
}
}
private int generationCout;
public int GenerationCout
{
get { return generationCout; }
set
{
generationCout = value;
NotifyOfPropertyChange(() => GenerationCout);
}
}
public void Start()
{
List<string> features = new List<string> { "(a*b)*c=a*(b*c)" };
genetic = new Genetic(features);
genetic.Start();
}
public MainViewModel()
{
generationCout = 0;
fitness = 0;
}
}
Есть поля, такие как best
и generationCount
. И есть метод SetActual()
, который используется в потоке этого класса. В методе я устанавливаю значение фактических полей, и я хочу отправить его в ViewModels, в конце концов обновив его в Views.
public class Genetic : BaseThread
{
private int generationCount;
private Subject best;
private void SetActual()
{
DataTable data;
char name;
double fitness;
foreach (Operation operation in best.Operations)
{
DataTable data;
data = Converter.ArrayToDataTable(operation);
name = operation.Name;
fitness = best.Fitness;
}
generationCount++;
}
}
Поэтому мне нужно показать фактическое значение этих полей в моих представлениях во время работы потока. Может ли кто-нибудь сказать мне, как это сделать, используя правильный подход?
Спасибо, это очень полезно! И мне жаль, что я отвечаю поздно. – Vojta