我有一个使用elementhost显示视图的winform。在我的winform上,我有一个winform按钮,当我的视图上的按钮被点击时,我想隐藏它。有什么方法可以实现这个目的吗?我只想知道我如何通过我的视图模型与winform交互。
form.cs
VModel.DisableBtn += new ViewModel.EventHandler(_viewmodel_DisableExitFormButton);
void _viewmodel_DisableExitFormButton()
{
btnExitForm.Enabled = false;
}
克萨姆勒
<Button Name="btnSave" Command="{Binding SaveToDatabase}" />
视图模型
private ViewModel _viewModel;
private ViewModel VModel
{
get
{
if (_viewModel == null)
{
_viewModel = new ViewModel();
}
return _viewModel;
}
set
{
_viewModel = value;
}
}
public delegate void EventHandler();
public event EventHandler DisableBtn;
public ICommand SaveToDatabase
{
get
{
if (SaveToDatabase == null)
{
SaveToDatabase = new RelayCommand(p => SaveToDB());
}
return SaveToDatabase;
}
}
private void SaveToDB()
{
DiasbleExitFormBtn();
}
private void DisableExitFormBtn()
{
// need to disable form button here
}
2条答案
按热度按时间3wabscal1#
在WinForm中,您可以注册到ViewModel的一个事件,当按下视图中的按钮时,该事件将播放,然后在此事件发生时隐藏您的按钮。
例如:
视图模型:
在您的WinForm中注册此事件:
在视图中按下按钮时,通过命令运行事件。
希望这能有所帮助
编辑:
将其添加到视图模型中
在对这个函数的命令调用中
xdyibdwo2#
应添加以下代码以激发DisableBtn事件
更改以下内容:
将其更改为: