我的父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...");
}
但这似乎不起作用。我怎么做到这一点?
感谢。
答案 0 :(得分:0)
在窗口的构造函数中调用InitializeComponent()
将实现您在XAML标记中定义的元素树,并将创建UserControl
的实例。 在之后,您可以使用支持字段设置UserControl
的任何属性:
objUserControl.Log = myLog;
请注意,在调用UserControl
的构造函数时,尚未设置Log
属性。在创建类的实例之前,您无法设置属性。
这意味着您无法在UserControl
的构造函数中记录某些内容,除非您将Log
属性设置为UserControl
类中的某个默认记录器本身,或者在调用static
之前设置属性InitializeComponent()
并将其设置为。