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

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

最佳答案

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

关于c# - 如果在代码中添加了元素,则 "FindName"不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10260122/

10-11 02:11