3

在 WPF 应用程序中,如果 ContentControl 在 XAML 中声明,

<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没有找到它。

在第二种情况下有什么问题?有什么不同?

4

1 回答 1

9

XAML 解析器会自动在名称范围中注册名称,如果您创建这样的元素,您可能需要自己使用RegisterName. (还有一个访问器FrameworkElement。)

于 2012-04-21T15:09:34.403 回答