作为一个WPF控件开发者,我在工作中经常遇到如本文标题所示的问题。其实,这个问题并不是很难,只是在操作上有些繁琐。本文将尝试对这个问题进行解答,并且对相关的一些技术细节加以探讨。
先从我遇到的一个典型的问题开始吧:写一个MyElement类,要求如下:
-
从FrameworkElement继承增加一个Button到它的VisualTree上
在Visual上有一个AddVisualChild方法,相信很多刚接触这个方法的同学们(好吧,至少我是这样)都会“顾名思义”地认为这个方法就可以解决本文的问题。再加上MSDN上也给出了一个例子来“火上浇油”一把。于是,一阵窃喜之后,我兴奋地敲出了以下代码:
C# Code [http://www.xueit.com]
class MyElement : FrameworkElement { private Button _button = new Button() { Content = "I'm a Button!"}; public MyElement() { this.AssembleVisualChildren(); } private void AssembleVisualChildren() { this.AddVisualChild(this._button); } protected override int VisualChildrenCount { get { return 1; } } protected override Visual GetVisualChild(int index) { return this._button ; } }
然后将这个MyElement加入测试窗口,代码如下:Code [http://www.xueit.com]
<Window x:Class="AddVisualChildTest.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:loc="clr-namespace:AddVisualChildTest" WindowStartupLocation="CenterScreen" Title="Window1" Height="300" Width="300"> <Grid> <loc:MyElement Margin="10"/> </Grid> </Window>
运行后的结果如下:
精彩图集精彩文章热门标签
抓取网页正文 改变 指定日期 XML操作 自动增长列 最大Id php php自定 数据库名 跨iframe find函数 数据存储 按比例 创建目录 指令 选不中 注入数据库 JS多语言 twisted select加锁 脚本自身修改 __setattr__ 主从 DDL Too 可逆加密算法 sup方法 线程并发 自增长 段空间 Oracle字符集 网络打印 svn 复制文件夹 横屏 Promise php php写入 python函数 页面宽度 memcach context 百度热词 发布apk 相 django-suit for语句 四叉树 目录传输 无法解析 Tab_control控 android设计模式 ForLinux2.6 memcpy() 草稿 发布项目 iis配置php 打 分页问题 注解 $符 UDP赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229