Я сделал программу, которая выполняет некоторые расчеты, для которых я хочу создать графический интерфейс с использованием WPF и MVVM. Я не уверен, как связать внутренние переменные моих приложений со свойствами модели, на которые будет реагировать представление. Я имею в виду, что если мое приложение работает с внутренней переменной n
, всякий раз, когда она изменяет значение, для того, чтобы изменение отражалось в представлении, я также должен вручную обновлять правильность модели.
Как лучше всего интегрировать мое приложение в MVVM?
Вот мой текущий код (упрощенный):
class ApplicationModel : INotifyPropertyChanged
{
#region Members
private int number;
#endregion
public ApplicationModel()
{
new Thread(() => applicationWork(this)).Start();
}
private void applicationWork(ApplicationModel appModel)
{
// internal variables
int n = 0
// simulating my app running, changing variables
while (true)
{
Thread.Sleep(1000);
n++;
appModel.number++;
// how do I tie the two together?
}
}
#region Properties
public int Number
{
get
{
return number;
}
set
{
number = value;
OnPropertyChanged("Number");
}
}
#endregion
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler? PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
// ...
}
#endregion
}
1 ответ
Если я правильно понимаю ваш вопрос, appModel.number++;
изменяет приватную резервную переменную, которая не будет обновлять установщик для Number
, и поэтому событие PropertyChanged не будет вызываться. Я считаю хорошей практикой всегда изменять открытый член.
Похоже, вы можете выполнить некоторую консолидацию переменных (n
всегда совпадает с Number
? Почему бы просто не изменить Number
?), чтобы навести порядок.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.