如何在不使用隐藏代码和使用 MVVM 的情况下 SetParent

问题描述

由于它使用了代码隐藏,我的问题是如何将它放在那里查看模型? 我尝试在视图模型中实例化视图,然后它将变为 null 和 0。

代码视图模型:

    internal void OnWindowHandleAvailable(IntPtr windowHandle)
    {
            p = Process.Start(@"..\Notepad.exe");
            Thread.Sleep(500);
            SetParent(p.MainWindowHandle,windowHandle);
    }

背后的代码

    public AView()
    {
        InitializeComponent();
        Loaded += View_Loaded;
    }

    private void View_Loaded(object sender,RoutedEventArgs e)
    {
        GiveWindowHandletoviewmodel();
    }

    private void GiveWindowHandletoviewmodel()
    {
        // get view model
        Aviewmodel viewmodel = this.DataContext as Aviewmodel;
        if (viewmodel == null)
            return;

        // get window handle
        var windowHandle = GetwindowHandle();
        if (windowHandle == IntPtr.Zero)
            return;

        // signal view model
        viewmodel.OnWindowHandleAvailable(windowHandle);
    }

    private IntPtr GetwindowHandle()
    {
        // get window
        var window = Window.Getwindow(this);
        if (window == null)
            return IntPtr.Zero;

        // get window handle
        return new WindowInteropHelper(window).Handle;
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)