将d:DataContext设置为另一个程序集的内部类

时间:2019-01-14 09:19:26

标签: wpf design-time-data

请考虑以下情形:

WPF视图:

d:DataContext="{d:DesignInstance vm:DesignViewModel, IsDesignTimeCreatable=True}"

ViewModel位于单独的c#项目中:

internal class DesignViewModel : ViewModel 
{ /* create demo data in ctor */ }

ViewModel在AssemblyInfo中具有以下条目:

[assembly: InternalsVisibleTo("WPF.Demo.View")]

XAML设计器中的错误消息:

  • 名称空间“ WPF.Demo.View”中不存在名称“ DesignViewModel”。

观察:

  • 如果我将DesignViewModel公开,而不是内部公开,则一切正常。但是,我想将其保留在内部,因为外部消费者真的不应该为设计时间而烦恼。
  • 如果将DesignViewModel移到保存该视图的同一程序集中,则一切正常。但是,我想将View和ViewModel分开。
  • InternalsVisibleTo设置正确,因为我可以从视图后面的代码中访问它。

问题:我可以将d:DataContext设置为另一个程序集的内部类吗?

1 个答案:

答案 0 :(得分:0)

不能。根据定义,当您将工件标记为内部工件时,会使它在其他部件中不可见。

或者,您可以在公共对象上公开一个方法,该方法可以在程序集的对象中实现所需的功能。

此致