void MapControl_Loaded(object sender, RoutedEventArgs e)
{
this.OnApplyTemplate();
CurrentMapChanged(new DependencyPropertyChangedEventArgs(MapControl.PropertyCurrentMap, "", "")); //
Window parentWindow = Window.GetWindow(this);
IntPtr handle = (new WindowInteropHelper(parentWindow)).Handle;
Console.WriteLine("parentWindow WHnd: " + handle.ToInt32()); HwndSource hwndSource = HwndSource.FromHwnd(handle);
Visual visual = hwndSource.RootVisual; Window window = (Window)visual;
Console.WriteLine("parentWindow WHnd: " + window.Title);
//
String mapUid = Guid.NewGuid().ToString();
this.Uid = mapUid;
//
Console.WriteLine("this control uid: " + this.Uid);
UIElement elem = this.FindUIElementByUid(window, mapUid);
if(elem != null)
{
Console.WriteLine("this control uid: " + elem.Uid);
} } private UIElement FindUIElementByUid(DependencyObject parent, string uid)
{
int count = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < count; i++)
{
UIElement el = VisualTreeHelper.GetChild(parent, i) as UIElement;
if (el == null) continue;
Console.WriteLine("el.Uid: " + el.Uid);
if (el.Uid == uid) { return el; }
UIElement el1 = FindUIElementByUid(el, uid);
if (el1 != null) { return el1; }
}
//
if (parent is ContentControl)
{
UIElement content = (parent as ContentControl).Content as UIElement;
if (content != null)
{
Console.WriteLine("content.Uid: " + content.Uid);
if (content.Uid == uid) return content;
UIElement el1 = FindUIElementByUid(content, uid);
if (el1 != null) { return el1; }
}
} return null;
}

-----------------------------------

WPF中获取Hwnd与窗体,Uid获取控件的更多相关文章

  1. Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)

    原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...

  2. WPF中的瀑布流布局(TilePanel)控件

    最近在用wpf做一个metro风格的程序,需要用到win8风格的布局容器,只能自己写一个了.效果如下 用法 : <local:TilePanel                          ...

  3. [译]- 6-1 排列窗体上的控件(Laying Out Widgets on a Form)

     排列窗体上的控件(Laying Out Widgets on a Form) 中英文对照:form(窗体),layout(布局或者排列,意思是进行窗体上控件的排列的过程,如大小位置等) absolu ...

  4. WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案

    首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼 ...

  5. WPF中不规则窗体与WebBrowser控件的兼容问题解决办法

    原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...

  6. WPF中制作无边框窗体

    原文:WPF中制作无边框窗体 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBorderStyle属性设置为None来完成.如果要制作成异形窗体,则需要使用图片或者使用G ...

  7. 根据获取的窗口句柄遍历窗口Edit控件

    网上说遍历窗口控件有两种方法: 1),使用EnumChildWindows,没有深究,     学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116 ...

  8. jquery获取含有某元素的的控件 “控件名[属性名=值]”

    jquery获取含有某元素的的控件 “控件名[属性名=值]”. 如,获取 <input id="${cheackbox}" data-role="icheck&qu ...

  9. WPF教程十一:简单了解并使用控件模板

    WPF教程十一:简单了解并使用控件模板 这一章梳理控件模板,每个WPF控件都设计成无外观的,但是行为设计上是不允许改变的,比如使用Button的控件时,按钮提供了能被点击的内容,那么自由的改变控件外观 ...

  10. WPF 程序如何跨窗口/跨进程设置控件焦点

    原文:WPF 程序如何跨窗口/跨进程设置控件焦点 WPF 程序提供了 Focus 方法和 TraversalRequest 来在 WPF 焦点范围内转移焦点.但如果 WPF 窗口中嵌入了其他框架的 U ...

随机推荐

  1. C#与SAP系统的接口调用

    Sap作为ERP的龙头企业,在企业信息化建设中是有目共睹的,特别是财务.人力.物流等发挥着极大作用,占领着半壁江山,所以与企业系统用SAP软件的接口对接很是普遍,简单介绍一下与SAP接口的一点点儿心得 ...

  2. [PHP] CentOS下搭建下PHP的运行环境

    在公司里面有分配的测试机,所有的开发代码都运行在测试机里面.因为公司的测试机机房退租,所以要在新申请的几台测试机上搭建开发环境.开发环境尽量做到和线上的环境一致,包括代码的目录路径,运行程序的进程用户 ...

  3. [PHP] 近期接手現有的企邮前端框架业务所遇困难

    1.邮箱前端有三大产品线,包括免费邮箱,VIP邮箱,企业邮箱,使用的一套代码,在代码中进行的逻辑判断处理,根据不同的配置进行不同的业务操作.有很多逻辑是各产品线是不同的,需要仔细开发和判断才能不会影响 ...

  4. 第十章 Centos7-系统进程管理

    第十章  Centos7-系统进程管理 本节所讲内容: 10.1  进程概述和ps查看进程工具 10.2  uptime查看系统负载-top动态管理进程 10.3  前后台进程切换- nice进程优先 ...

  5. 【HDU1814】Peaceful Commission(2-sat+暴力染色)

    传送门 \(2-sat\)的模板题,首先得出题目中的二元关系为:对于有矛盾的\(x_i,x_j\),至多选择一个,那么连边\(x_i\rightarrow x_j',x_j\rightarrow x_ ...

  6. 线段树set,add基础

    UVA11992 Fast Matrix Operations https://www.luogu.org/problem/UVA11992 此类模板题建议随便打打就行了233....

  7. Pwn-level0

    题目地址 https://dn.jarvisoj.com/challengefiles/level0.b9ded3801d6dd36a97468e128b81a65d 第一步先看文件的属性    64 ...

  8. 解决Django-Error: That port is already in use

    Error: That port is already in use. 1.使用python manage.py runserver 8001 开一个新的端口. 2.kill掉原来的端口(在root条 ...

  9. SpringMVC环境搭建(二)

    一.基于XML 1. 创建Maven Project,选择war,修改pom.xml SpringMVC是依赖于Spring的,需要导入核心包. <properties> <!-- ...

  10. 最短路问题的三种算法&模板

    最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...