从父控件的构造函数中设置子控件的属性

时间:2017-11-22 14:36:04

标签: c# wpf

我的父wpf窗口P使用"用户控件" C如下图所示:

(

我在儿童控制方面的财产如下:

<widgets:NonBlockingLoadingDecorator Grid.Row="0" Grid.Column="0"  >    
    <local:MyUserControl x:Name="objUserControl" MouseDoubleClick="OnItemDoubleClick"/>
</widgets:NonBlockingLoadingDecorator>

我需要能够从父窗口的构造函数设置此属性,以便我可以读取子控件中的属性,如下所示...

用户控制:

public log4net.ILog Log { get; set; }

父:

public C()
    {

      InitializeComponent();
      this.Log.Debug("My user control...");
     }

但这似乎不起作用。我怎么做到这一点?

感谢。

1 个答案:

答案 0 :(得分:0)

在窗口的构造函数中调用InitializeComponent()将实现您在XAML标记中定义的元素树,并将创建UserControl的实例。 之后,您可以使用支持字段设置UserControl的任何属性:

objUserControl.Log = myLog;

请注意,在调用UserControl的构造函数时,尚未设置Log属性。在创建类的实例之前,您无法设置属性。

这意味着您无法在UserControl的构造函数中记录某些内容,除非您将Log属性设置为UserControl类中的某个默认记录器本身,或者在调用static 之前设置属性InitializeComponent()并将其设置为