1

考虑以下场景:

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 移动到包含视图的同一个程序集中,一切正常。但是,我想将视图和视图模型分开。
  • InternalsVisibleTo 设置正确,因为我可以从视图后面的代码中访问它。

问题:如何将 d:DataContext 设置为另一个程序集的内部类?

4

1 回答 1

-1

你不能。根据定义,当您将工件标记为内部时,您将使其对其他程序集不可见。

或者,您可以在公共对象上公开一个方法,从而在程序集的对象中生成您想要的内容。

问候,

于 2019-01-14T10:42:04.840 回答