• 大小: 392KB
    文件类型: .zip
    金币: 2
    下载: 3 次
    发布日期: 2021-06-01
  • 语言: C#
  • 标签: wpf  控件  

资源简介

WPF中用于嵌入其他进程窗口的自定义控件(AppContainer) 具体见博文:http://blog.csdn.net/zzzwwwppp11199988899/article/details/78131292

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Forms.Integration;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace AppContainers
{
    /// 
    /// 按照步骤 1a 或 1b 操作,然后执行步骤 2 以在 XAML 文件中使用此自定义控件。
    ///
    /// 步骤 1a) 在当前项目中存在的 XAML 文件中使用该自定义控件。
    /// 将此 xmlNamespace 特性添加到要使用该特性的标记文件的根 
    /// 元素中: 
    ///
    ///     xmlns:MyNamespace=“clr-namespace:AppContainer“
    ///
    ///
    /// 步骤 1b) 在其他项目中存在的 XAML 文件中使用该自定义控件。
    /// 将此 xmlNamespace 特性添加到要使用该特性的标记文件的根 
    /// 元素中: 
    ///
    ///     xmlns:MyNamespace=“clr-namespace:AppContainer;assembly=AppContainer“
    ///
    /// 您还需要添加一个从 XAML 文件所在的项目到此项目的项目引用,
    /// 并重新生成以避免编译错误: 
    ///
    ///     在解决方案资源管理器中右击目标项目,然后依次单击
    ///     “添加引用”->“项目”->[选择此项目]
    ///
    ///
    /// 步骤 2)
    /// 继续操作并在 XAML 文件中使用控件。
    ///
    ///     
    ///
    /// 

    [TemplatePart(Name = “PART_Host“ Type = typeof(WindowsFormsHost))]
    public class AppContainer : Control
    {
        #region Fields

        private WindowsFormsHost _winFormHost = null;
        private System.Windows.Forms.Panel _hostPanel = null;

        private ManualResetEvent _eventDone = new ManualResetEvent(false);
        private Process _process = null;
        
        private IntPtr _embededWindowHandle = (IntPtr)0;

        #endregion

        #region Properties

        #endregion

        #region Dependency Properties

        #endregion

        #region Wrappers

        #endregion

        #region Constructors

        static AppContainer()
        {
            DefaultstyleKeyProperty.Overridemetadata(typeof(AppContainer) new frameworkPropertymetadata(typeof(AppContainer)));
        }

        #endregion

        #region Override Methods

        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            _winFormHost = GetTemplateChild(“PART_Host“) as WindowsFormsHost;
            if(_winFormHost != null)
            {
                _hostPanel = new System.Windows.Forms.Panel();
                _winFormHost.Child = _hostPanel;
            }
        }

        protected override void OnRender(DrawingContext drawingContext)
        {
            if (_process != null)
            {
                Win32Api.MoveWindow(_process.MainWindowHandle 0 0 (int)ActualWidth (int)ActualHeight true);
            }
            base.OnRender(drawingContext);
        }

        protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
     

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-09-27 10:16  WpfAppContainerTest\
     目录           0  2017-09-27 10:14  WpfAppContainerTest\.vs\
     目录           0  2017-09-27 10:14  WpfAppContainerTest\.vs\WpfAppContainerTest\
     目录           0  2017-09-27 10:14  WpfAppContainerTest\.vs\WpfAppContainerTest\v15\
     文件       82432  2017-09-29 11:19  WpfAppContainerTest\.vs\WpfAppContainerTest\v15\.suo
     目录           0  2017-09-29 11:18  WpfAppContainerTest\.vs\WpfAppContainerTest\v15\sqlite3\
     文件      897024  2017-09-29 11:18  WpfAppContainerTest\.vs\WpfAppContainerTest\v15\sqlite3\storage.ide
     目录           0  2017-09-29 11:18  WpfAppContainerTest\AppContainer\
     文件        7332  2017-09-29 11:12  WpfAppContainerTest\AppContainer\AppContainer.cs
     文件        3860  2017-09-27 14:16  WpfAppContainerTest\AppContainer\AppContainers.csproj
     目录           0  2017-09-27 10:16  WpfAppContainerTest\AppContainer\Properties\
     文件        2307  2017-09-27 10:16  WpfAppContainerTest\AppContainer\Properties\AssemblyInfo.cs
     文件        2867  2017-09-27 11:56  WpfAppContainerTest\AppContainer\Properties\Resources.Designer.cs
     文件        5612  2017-08-31 15:15  WpfAppContainerTest\AppContainer\Properties\Resources.resx
     文件        1113  2017-09-27 11:56  WpfAppContainerTest\AppContainer\Properties\Settings.Designer.cs
     文件         201  2017-08-31 15:15  WpfAppContainerTest\AppContainer\Properties\Settings.settings
     目录           0  2017-09-27 14:32  WpfAppContainerTest\AppContainer\Themes\
     文件        1012  2017-09-27 12:29  WpfAppContainerTest\AppContainer\Themes\AppContainer.xaml
     文件         419  2017-09-27 14:32  WpfAppContainerTest\AppContainer\Themes\Generic.xaml
     文件        5504  2017-09-27 14:18  WpfAppContainerTest\AppContainer\Win32Api.cs
     目录           0  2017-09-27 11:56  WpfAppContainerTest\AppContainer\bin\
     目录           0  2017-09-27 12:03  WpfAppContainerTest\AppContainer\bin\Debug\
     文件       14848  2017-09-29 11:18  WpfAppContainerTest\AppContainer\bin\Debug\AppContainers.dll
     文件       26112  2017-09-29 11:18  WpfAppContainerTest\AppContainer\bin\Debug\AppContainers.pdb
     目录           0  2017-09-29 11:19  WpfAppContainerTest\AppContainer\bin\Release\
     目录           0  2017-09-27 10:16  WpfAppContainerTest\AppContainer\obj\
     目录           0  2017-09-29 11:18  WpfAppContainerTest\AppContainer\obj\Debug\
     文件          42  2017-09-27 12:11  WpfAppContainerTest\AppContainer\obj\Debug\AppContainer.csproj.CoreCompileInputs.cache
     文件        1363  2017-09-27 12:03  WpfAppContainerTest\AppContainer\obj\Debug\AppContainer.csproj.FileListAbsolute.txt
     文件         954  2017-09-27 12:03  WpfAppContainerTest\AppContainer\obj\Debug\AppContainer.csproj.GenerateResource.Cache
     文件        2503  2017-09-27 12:03  WpfAppContainerTest\AppContainer\obj\Debug\AppContainer.csprojResolveAssemblyReference.cache
............此处省略83个文件信息

评论

共有 条评论