C# MVVM 如何从模型更新视图模型字符串
C# MVVM How to update viewmodel string from the model
我是 c# 中的 mvvm 和 wpf 的新手,并且卡在了一些非常基本的 stuff.In 这个例子中,我正在使用 Fody.PropertyChanged。我有一个基本的视图模型,它包含一个名为 Test 的字符串,该字符串绑定到一个文本块。
public class Model : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
public string Test { get; set; }
}
然后,在一个名为 Data 的单独文件中 class,我有一个简单的函数,可以递增一个 int 并将其转换为一个字符串。
public class Data
{
public static int i = 0;
public static string IncTest { get; set; }
public static void Inc()
{
i++;
IncTest = i.ToString();
}
}
如何在调用 Inc() 函数时更新视图模型中的 Test 变量?例如,当点击一个按钮时
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new Model();
Data.Inc();
}
private void Increment_Click(object sender, RoutedEventArgs e)
{
Data.Inc();
}
在 MVVM 中,模型不更新视图模型,它实际上相反,视图模型更新模型属性。
这是一个例子。
型号:
public class Model
{
public string Test
{
get;
set;
}
}
查看模型:
public class ViewModel : INotifyPropertyChanged
{
private Model _model;
public string Test
{
get
{
return _model.Test;
}
set
{
if(string.Equals(value, _model.Test, StringComparison.CurrentCulture))
{
return;
}
_model.Test = value;
OnPropertyChanged();
}
}
public ViewModel(Model model)
{
_model = model;
}
}
您的视图将绑定到您的视图模型。
更新:关于你的问题
public class SomeClass
{
public static void Main(string [] args)
{
Model model = new Model();
ViewModel viewModel = new ViewModel(model);
//Now setting the viewmodel.Test will update the model property
viewModel.Test = "This is a test";
}
}
我是 c# 中的 mvvm 和 wpf 的新手,并且卡在了一些非常基本的 stuff.In 这个例子中,我正在使用 Fody.PropertyChanged。我有一个基本的视图模型,它包含一个名为 Test 的字符串,该字符串绑定到一个文本块。
public class Model : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
public string Test { get; set; }
}
然后,在一个名为 Data 的单独文件中 class,我有一个简单的函数,可以递增一个 int 并将其转换为一个字符串。
public class Data
{
public static int i = 0;
public static string IncTest { get; set; }
public static void Inc()
{
i++;
IncTest = i.ToString();
}
}
如何在调用 Inc() 函数时更新视图模型中的 Test 变量?例如,当点击一个按钮时
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new Model();
Data.Inc();
}
private void Increment_Click(object sender, RoutedEventArgs e)
{
Data.Inc();
}
在 MVVM 中,模型不更新视图模型,它实际上相反,视图模型更新模型属性。
这是一个例子。
型号:
public class Model
{
public string Test
{
get;
set;
}
}
查看模型:
public class ViewModel : INotifyPropertyChanged
{
private Model _model;
public string Test
{
get
{
return _model.Test;
}
set
{
if(string.Equals(value, _model.Test, StringComparison.CurrentCulture))
{
return;
}
_model.Test = value;
OnPropertyChanged();
}
}
public ViewModel(Model model)
{
_model = model;
}
}
您的视图将绑定到您的视图模型。
更新:关于你的问题
public class SomeClass
{
public static void Main(string [] args)
{
Model model = new Model();
ViewModel viewModel = new ViewModel(model);
//Now setting the viewmodel.Test will update the model property
viewModel.Test = "This is a test";
}
}