我有一个关于从视图(xaml.cs)调用视图模型方法的问题。任何建议将不胜感激。
该方法适用于视图模型,因为如果我在视图模型构造函数中调用该方法,我将能够在DataGrid中查看数据。但是当我在视图中调用该方法(xaml.cs)时,DataGrid为空。
在视图部分中,我有以下代码片段:(xaml.cs part)
public bool AddSpeaker(Entities.Speaker speaker, string[] selectedCertifications)
{
if (selectedCertifications != null)
{
SpeakerCertification speakerCertification = new SpeakerCertification();
speaker.Certifications = new List<SpeakerCertification>();
foreach (var certificate in selectedCertifications)
{
if (certificate.CompareTo("false")!=0)
{
var certificationToAdd = _ctx.Certifications.Find(int.Parse(certificate));
speakerCertification = new SpeakerCertification();
speakerCertification.CertificationId = certificationToAdd.Id;
speaker.Certifications.Add(speakerCertification);
}
}
}
_ctx.Speakers.Add(speaker);
_ctx.SaveChanges();
return true;
}
答案 0 :(得分:0)
在View
中,您可以拥有事件处理程序,但这些处理程序执行的操作只会影响视图。因此,我建议您初始化ViewModel
,例如在它自己的构造函数中。
但如果您坚持在点击按钮后调用viewModel.Init()
,则将Button
绑定到从ViewModel公开的ICommand
作为属性。
例如:
<Window.DataContext>
<viewModel:ShellViewModel />
</Window.DataContext>
<Button Command="{Binding InitCommand}">Init</Button>
public ShellViewModel()
{
InitCommand = new RelayCommand(Init);
}
public ICommand InitCommand { get; private set; }
private void Init()
{
throw NotImplementedException();
}