C# 视图模型和视图控制执行顺序

C# 视图模型和视图控制执行顺序,c#,wpf,mvvm,dependencies,C#,Wpf,Mvvm,Dependencies,我对MVVM中的执行顺序有一个严重的问题: 此代码用于安装视图(XAML): ExecutionView具有viewmodel的内部字段(\u viewmodel=DataContext作为ExecutionViewModel;)。 在其CTOR中,它使用viewmodel-\u viewmodel.DoSomthing() 问题是它是空的 我无法控制绑定的时间-我读了一些书,并且有一些方法可以处理这个问题(Loaded event和datacontextchanged)-但是我认为这是一个

我对MVVM中的执行顺序有一个严重的问题: 此代码用于安装视图(XAML):


ExecutionView
具有viewmodel的内部字段(
\u viewmodel=DataContext作为ExecutionViewModel;
)。 在其CTOR中,它使用viewmodel-
\u viewmodel.DoSomthing()

问题是它是空的

我无法控制绑定的时间-我读了一些书,并且有一些方法可以处理这个问题(Loaded event和datacontextchanged)-但是我认为这是一个解决方法,而不是应该采用的方式

我需要一种方法来控制我可以编写一个函数的步骤,该函数将在DataContext确定有效后被调用一次


BR,Mosh.

当构造函数中的
DataContext
还不太可用时,在构造函数中订阅
DataContextChanged
事件,当调用偶数处理程序时,获取对新的
DataContext
的引用并执行所需的任何操作

还可以在XAML中声明事件处理程序,因此事件订阅不需要在构造函数中


关于那件事。

我有一个严重的问题
-是的,你应该开始接受答案,至少有时候是这样。你的权利我的不好-实际上忘记接受我之前问过的两个答案,对此有什么想法吗?我知道,谢谢,有没有一种更有序的方式将xaml同步到代码隐藏中?我想你可能会问自己一个更好的问题是“为什么我需要从构造函数(或代码隐藏中的其他地方)访问DataContext?”我很少需要自己这样做。如果您正在寻找一种更好的方法来与不断变化的DataContext同步,那么DataContextChanged是一个非常好的答案,因为这就是该事件的全部要点。
<local:ExecutionView x:Name="ExecutionView" DataContext="{Binding ExecutionViewNodel}"/>