在WPF应用程序中,如果在XAML中声明了ContentControl,
<Grid Name="MyGrid">
<ContentControl Name="MyContentControl" />
</Grid>
然后我可以使用FindName
轻松地在代码中引用它:
ContentControl cc = FindName("MyContentControl") as ContentControl;
cc.Content = ...
但是如果我在代码中添加ContentControl:
ContentControl contentcntr = new ContentControl();
contentcntr.Name = "MyContentControl";
this.MyGrid.Children.Add(contentcntr);
FindName
找不到它。
第二种情况有什么问题?有什么区别?
答案 0 :(得分:8)
XAML解析器会自动在名称范围内注册名称,如果您创建这样的元素,则可能需要使用RegisterName
自行完成。 (还有一个accessor on FrameworkElement
。)