我正坐在一个问题上,希望你能帮助我。我正在WPF MVVM中实现。我将尽我所能解释。 所以我有一个观点。其中我有一个大的财产考试。在此视图中,我必须能够更改属性检查的设置。这很好。但是,我想要一个按钮,然后会出现一个对话框。在那里,我可以更改一些特定的(其他)设置或考试属性。我不希望在一个窗口中完成所有操作,因此我使用对话框。我在我的viewmodel中执行此操作:
private void AlgemeneGegevensClick(object sender, RoutedEventArgs e)
{
ToetsBeheerViewModel vm = (ToetsBeheerViewModel)this.DataContext;
EditAlgemeneGegevens window = new EditAlgemeneGegevens(vm);
window.Show();
}
所以一个窗口消失了一些文本框,我可以填写一些测试规范。但现在我的问题是,如何将(检查对象的)更改返回到viewmodel?因为我在我的分开窗口中这样做了:
public partial class EditAlgemeneGegevens : Window
{
private ToetsBeheerViewModel toetsb;
public EditAlgemeneGegevens(ToetsBeheerViewModel vm)
{
InitializeComponent();
toetsb = vm;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
toetsb.Examination.Course = "blablabla";
}
}
所以我想在blablabla中更改考试的课程属性。但是我的viewmodel不会知道这个属性被改变了吗? 希望你能得到它..并且可以帮助我:))?
谢谢..
答案 0 :(得分:1)
看起来你正在将ViewModel传递到新窗口......所以新窗口的任何更改都不应该反映在该实例上吗?
如果您需要一种更松散耦合的返回结果的方式,您可以考虑为您的应用程序使用消息总线基础结构。有几个实现,但这是一篇很好的文章:
http://blog.tonysneed.com/2011/03/03/climb-onboard-on-the-mvvm-message-bus/
答案 1 :(得分:0)
IMO,你的对话窗口应该有它自己的viewmodel,你可以按照here
描述从该视图模型发送一条消息到原始的viewmodel。