Catel IUIViusalizerService ShowDialog() error

本文关键字:error ShowDialog IUIViusalizerService Catel | 更新日期: 2023-09-27 18:33:18

我在尝试显示对话框时遇到麻烦。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. 对话视图和/或对话视图模型是否有必须使用的不同基类?

我开始使用 Catel 3.6 遇到这个问题

谢谢

Catel IUIViusalizerService ShowDialog() error

确保您使用的视图模型解析为派生自 DataWindow 的视图或具有 Catel WindowLogic 实现的自定义窗口,如文档中所示。