有一段代码,寻找XAML中的元素,此元素存在于模板中。如下:public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Border border = button1.Template.FindName("border", button1) as Border;
MessageBox.Show((border == null).ToString());
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Border border = button1.Template.FindName("border", button1) as Border;
MessageBox.Show((border == null).ToString());
}
}
在窗体的构造函数中寻找button1控件模板中的Border元素,结果没有找到,请问,这个时候为什么找不到呢?但是在button1的单击事件中却找到了。
在执行InitializeComponent方法之前,应用程序就执行了Application.LoadComponent(this, resourceLocater)静态方法,其中参数resourceLocater是XAML文档的Uri。
也就是说在窗体执行InitializeComponent()方法之前就加载了XAML文档,为什么找不到模板中的元素呢?
{
public MainWindow()
{
InitializeComponent();
Border border = button1.Template.FindName("border", button1) as Border;
MessageBox.Show((border == null).ToString());
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Border border = button1.Template.FindName("border", button1) as Border;
MessageBox.Show((border == null).ToString());
}
}
在窗体的构造函数中寻找button1控件模板中的Border元素,结果没有找到,请问,这个时候为什么找不到呢?但是在button1的单击事件中却找到了。
在执行InitializeComponent方法之前,应用程序就执行了Application.LoadComponent(this, resourceLocater)静态方法,其中参数resourceLocater是XAML文档的Uri。
也就是说在窗体执行InitializeComponent()方法之前就加载了XAML文档,为什么找不到模板中的元素呢?
解决方案 »
- 请教:水晶报表中如何设置页眉的宽度?
- 高分求~UDP 通信中的多线程处理
- sqlce/sql小问题
- WPF中如何读取数据库中的图象列?急~~求救~~
- 如何在用bindingsource控件和tableadapter控件操作数据库的程序中实现事务提交或回滚
- 关于进程(高手赐教)
- 急求c#二次开发CAD求资料
- exchange2000 + vs.net OA系统开发
- to scgqq(轻骑兵), xdev(Gallant), mbm(-- (@ \/ @) --)和其他浏览过http://www.csdn.net/expert/topic/793/793525.xml?temp=.4497339的
- winform新手求解惑
- 模式窗体和无模式窗体
- vs2010 制作安装包无法选择盘符
之后写个eventhandler
this.Loaded+=自己点下就出来了
意思是加载完成后执行 也就是初始化控件完成后会触发这个事件
http://blog.csdn.net/daming_ocean/article/details/6093221希望对你有帮助
Border border = button1.Template.FindName("border", button1) as Border;
Window.ContentRendered之后。把你的代码放到window.ContentRendered事件中就可以找到任何控件了。
http://msdn.microsoft.com/zh-cn/library/system.windows.frameworkelement.loaded.aspx