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



请考虑以下场景:

WPF 视图:

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

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

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

ViewModel 在 AssemblyInformation 中有以下条目:

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

XAML 设计器中的错误消息:

  • 命名空间"WPF.演示视图"。

观察:

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

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

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

或者,可以在公共对象上公开一个方法,该方法在程序集的对象中生成所需的内容。

问候

相关内容

最新更新