在项目之间的代码隐藏中扩展WPF窗口
本文关键字:扩展 WPF 窗口 隐藏 代码 项目 之间 | 更新日期: 2023-09-27 17:58:19
我有一个XAML/cs类(EditorWindow),它从Window派生并实现一些特殊函数。我在一个从EditorWindow派生的.cs文件中也有一个子类(公共类DetailedEditorWindow:EditorWindow)。
如果这两个都在同一个项目中,我可以很好地打开DetailedEditorWindow(如果它们在不同的命名空间中,这没有什么区别),但如果我将DetailedEdittorWindow移动到另一个引用EditorWindow的项目中,则我会得到一个缺少SystemException的资源,说它缺少EditorWindow.xaml。
为什么会出现这种情况,以及如何修复此错误?
提前感谢您,JasonX
因为EditorWindow是一个分部类,不能只与.cs一起工作,所以它需要xaml代码才能工作。当您将DetailedEditorWindow放入外部程序集中并创建实例时,它也将调用EditorWindow构造函数。但这将尝试查找内部引用了本地资源Uri的XAML文件。无法在您的seccond项目中解析此Uri。我认为你对此无能为力。
您可以在.csproj文件中看到这个参考:
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
在这种情况下,您可以创建一个没有XAML的窗口,并在其中实现您的逻辑。然后从中继承EditorWindow和DetailedEditorWindow。但是,您无法通过它们的名称引用Xaml控件。
另一种可能性是使用自定义控件+样式,它将实现所有逻辑,而您的窗口将仅承载此控件。