我在尝试展示对话时遇到了麻烦。 IUIViusalizerService ShowDialog()方法产生以下错误:
错误:“在'MyView'上找不到方法'显示'
调试器运行到UIVisualizerService.cs到下面的方法(从cs文件中的第380行开始):
protected virtual bool? ShowWindow(FrameworkElement window, bool showModal)
{
if (showModal)
{
var showDialogMethodInfo = window.GetType().GetMethodEx("ShowDialog");
if (showDialogMethodInfo != null)
{
// Child window does not have a ShowDialog, so not null is allowed
return showDialogMethodInfo.Invoke(window, null) as bool?;
}
Log.Warning("Method 'ShowDialog' not found on '{0}', falling back to 'Show'", window.GetType().Name);
}
var showMethodInfo = window.GetType().GetMethodEx("Show");
if (showMethodInfo == null)
{
string error = string.Format("Method 'Show' not found on '{0}', cannot show the window", window.GetType().Name);
Log.Error(error);
throw new NotSupportedException(error);
}
showMethodInfo.Invoke(window, null);
return null;
}
我的主叫代码:
public MainWindowViewModel()
{
ViewModels.MyViewModel mv = new MyViewModel();
var ui = GetService<IUIVisualizerService>();
ui.ShowDialog(mv)
}
问题: 1.我是否应该在代码背后隐藏“Show()”方法? 2.是否有必须使用的DialogView和/或DialogViewModel的不同基类?
我开始使用Catel 3.6
解决此问题谢谢
答案 0 :(得分:0)
确保您使用的视图模型解析为从DataWindow派生的视图或使用Catel WindowLogic实现的自定义窗口,如文档中所示。