【发布时间】:2015-12-18 14:48:38
【问题描述】:
为了打开 ProductView,我添加了一个 DialogService,到目前为止 ShowDetailDialog() 正在按预期工作。
问题:
我在 ProductView 上调用 Close(),视图没有关闭。我通过在对对话服务关闭方法的调用上设置断点来调试此问题。
当我单步执行代码时,null 检查显示 productView 为 null,这会阻止调用 Close()。
有谁知道为什么 productView 为空? (虽然它在视图上显示数据)
DialogService:(承载 Show 和 Close 方法)
namespace MongoDBApp.Services
{
class DialogService : IDialogService
{
Window productView = null;
ProductView _productView;
public DialogService()
{
_productView = new ProductView();
}
public void CloseDetailDialog()
{
if (productView != null)
productView.Close();
}
public void ShowDetailDialog()
{
_productView.ShowDialog();
}
}
}
ProductViewModel:(ProductVM总结,调用SaveCommand上的close方法)
private void SaveProduct(object product)
{
_dialogService.CloseDetailDialog();
Messenger.Default.Send<ProductModel>(SelectedProduct);
}
CustomerOrdersViewmodel:(最初调用 ShowDetailDialog() 的地方)
private void EditOrder(object obj)
{
Messenger.Default.Send<ProductModel>(SelectedProduct);
_dialogService.ShowDetailDialog();
}
【问题讨论】:
-
你在哪里打电话
ShowDetailDialog? -
在 CustomerOrdersVM 中,我现在将其发布。 ShowDetailDialog 正在工作,只是由于某种原因没有关闭。
-
使用
ShowDialog时,通常需要设置DialogResult属性。Close方法将用于非模态窗口。 -
@SriramSakthivel 能否通过设置 DialogResult 举例说明您的意思?