【发布时间】:2021-07-19 10:42:31
【问题描述】:
我是 WPF 新手,我创建了一个 WPF 应用程序。在该应用程序中,我有一个包含如下按钮的 UserControl,
<UserControl.DataContext>
<local:AppViewModel/>
</UserControl.DataContext>
<Grid>
<Button x:Name="Btn_Contact" Command="{Binding BookVM.LoadContactsCommand}" Click="Btn_Contact_Click"/>
</Grid>
我的 AppViewModel 类如下
public AppViewModel()
{
var dataService = new JsonContactDataService();
BookVM = new BookViewModel(dataService);
CurrentView = BookVM;
}
我的问题是我希望这个 UserControl 在加载 UserControl 而不是单击按钮时自动运行 Btn_Contact 的命令。我尝试在 UserControl 代码隐藏上编写命令绑定,但它不起作用。
public UserControlMemo()
{
InitializeComponent();
Btn_Contact.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
Btn_Contact.SetBinding(Button.CommandProperty, new Binding("BookVM.LoadContactsCommand"));
}
【问题讨论】:
-
所以按钮点击指向一个函数/命令——“BookVM.LoadContactsCommand”——为什么不调用目标函数而不是引发点击事件?
-
我同意。不要在没有点击时伪造点击事件。您的用户控件有一个加载的事件。您可以执行每个 ICommand。 BookVM.LoadContactsCommand.Execute()。这就是你在后面的代码中要做的所有事情
-
ICommand。图书虚拟机。加载联系人命令。 Execute(): 没有成功。