c# - How to change value in one class if value changes in another
问题描述
Let's say I have a parameter in my ViewModel:
public string ChosenQualityParameter
{
get => DefectModel.SelectedQualDefectParameters?.Name ?? "Не выбран параметр";
}
and I have a class DefectModel
with parameter SelectedQualDefectParameters.Name
in it. I want to change the UI binded to ChosenQualityParameter
, when theName
parameter changes too.
But I don't know how to do this properly. Any suggestions? Thanks in advance.
解决方案
你可以像这样定义你的 ViewModel 类:
public class ViewModel
{
private DefectModel _defectModel;
public ViewModel(DefectModel defectModel)
{
_defectModel = defectModel;
}
public string ChosenQualityParameter
{
get => _defectModel.SelectedQualDefectParameters?.Name ?? "Не выбран параметр";
}
}
我个人不喜欢视图模型中的这种依赖关系,但它可能会在这里完成工作。无论如何,它似乎在控制台应用程序中工作:
using System;
public class Parameters
{
public string Name { get; set; }
}
public class DefectModel
{
public Parameters SelectedQualDefectParameters { get; set; }
}
public class ViewModel
{
private DefectModel _defectModel;
public ViewModel(DefectModel defectModel)
{
_defectModel = defectModel;
}
public string ChosenQualityParameter
{
get => _defectModel.SelectedQualDefectParameters?.Name ?? "Не выбран параметр";
}
}
class Program
{
static void Main()
{
var defectModel = new DefectModel
{
SelectedQualDefectParameters = new Parameters
{
Name = "test"
}
};
var viewModel = new ViewModel(defectModel);
Console.WriteLine(viewModel.ChosenQualityParameter);
defectModel.SelectedQualDefectParameters.Name = "changed";
Console.WriteLine(viewModel.ChosenQualityParameter);
Console.ReadKey();
}
}
推荐阅读
- c++ - 启动状态机无法处理启动时的内部转换
- cuda - Nvcc 致命:不支持主机编译器 ('clang') 的版本 ('40001')
- typescript - Typescript mixin 类上的类验证器装饰器
- google-calendar-api - Google Calendar API 在批处理期间返回超出速率限制的错误
- javascript - 为什么传递给备忘录的道具不存储值
- javascript - 在按钮上单击发送整个
- sql - 使用可变 Excel 值查询 SQL 的最佳方法
- python - 在条件列表(掩码)python pandas 上施加 OR
- php - 如何将 jQuery 自动完成处理程序添加到在 PHP 中动态创建的表单?
- python - 为python数组中的所有元素添加一个滞后期