Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF:视图呈现后在MVVM中调用命令?_Wpf_Vb.net_Mvvm_Command - Fatal编程技术网

WPF:视图呈现后在MVVM中调用命令?

WPF:视图呈现后在MVVM中调用命令?,wpf,vb.net,mvvm,command,Wpf,Vb.net,Mvvm,Command,我正在设计一个WPF应用程序并使用MVVM模式。假设我有一个名为View1的视图,它的DataContext在它的contractor中设置为ViewModel1。VM有一个名为RefreshCommand的命令,其任务是计算要在视图上显示的数据。现在我想在显示视图后立即调用这个refresh命令,但我不知道怎么做 我试图在代码隐藏中调用它,在那里我处理usercontrol的Loaded事件,如下所示: Private Sub AfterLoad(sender As Object, e As

我正在设计一个WPF应用程序并使用MVVM模式。假设我有一个名为
View1
的视图,它的
DataContext
在它的contractor中设置为
ViewModel1
。VM有一个名为
RefreshCommand
命令,其任务是计算要在视图上显示的数据。现在我想在显示视图后立即调用这个
refresh命令
,但我不知道怎么做

我试图在代码隐藏中调用它,在那里我处理usercontrol的
Loaded
事件,如下所示:

Private Sub AfterLoad(sender As Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    RefreshButton.Command.Execute(sender)
End Sub

然而,这时我注意到,
RefreshButton.Command
仍然设置为
Nothing
。请注意,在UI交互中,可以调用此按钮/命令。那么我应该在什么时候调用命令来执行这样的操作呢?谢谢

看起来应该行得通。显示您的XAML和viewmodel


通常我会让我的虚拟机立即获取数据,并通过绑定在视图中显示数据。尝试在VM构造函数中执行Refresh命令

,看起来应该可以正常工作。显示您的XAML和viewmodel?听起来确实有点奇怪。我想通常我会让我的虚拟机立即获取数据,并通过绑定在视图中显示数据。您确定要视图启动数据加载吗?@Alan感谢您的回复。当然行了!现在我只调用VM的contractor的最后一行中的命令exec函数。它正在发挥作用。此UserControl实际上包含一个AX Windows窗体控件(来自OWC的数据透视表),因此VM和视图以某种方式相互混淆:VM必须从视图中知道数据透视表成员。这就是我感到困惑的原因。但不管怎样,它现在起作用了。谢谢很高兴你让它工作了,我回复了我的评论作为回答,因为你让它工作了。