就像这篇文章Design / Run-time datacontext中提到的那样,我使用design-time datacontext来“装饰”我的(子窗口) usercontrols ,然后将它们收集到我的 MainWindow 从而避免在运行时保留资源
文件 SampleItemWithRun.xaml
<UserControl
...
xmlns:ViewModel="clr-namespace:WpfAppCertif_1.ViewModel" x:Class="WpfAppCertif_1.Views.SampleItemWithRun"
...
d:DataContext="{d:DesignInstance {x:Type ViewModel:CodeSample}, IsDesignTimeCreatable=True}"
>
<Grid>
...
</Grid>
但是,我想访问此 DesignInstance ,以便在 usercontrol构造函数 中执行一个小的 adjustement
文件 SampleItemWithRun.xaml.cs
我想编写如下所示的内容,但DataContext为null(如果我将 d:DataContext ... 行放在标记内,则同样如此。 我在调试器下检查了很多 this 对象的字段,但没找到我的 CodeSample 对象
public partial class SampleItemWithRun : UserControl
{
public SampleItemWithRun()
{
InitializeComponent();
var dc = DataContext; //Not working because Null !!
var cs = dc as CodeSample;
if (DesignerProperties.GetIsInDesignMode(this))
{
if ( null != cs)
{
//do something on the CodeSample object cs
//...
}
}
}
}
总之,问题是: 我在哪里可以找到我的设计实例对象?