创建可重用的WINDOW控件
好吧,这似乎很难,或者我错过了一些明显的东西。 我想创建可重复使用的WINDOW,它将在所有产品中使用。 这意味着该控件位于WPF.Controls程序集中。 主题/ Generic.xaml不是解决方案,我需要为窗口提供自己的代码,例如自定义消息钩子等。
这是我在WPF.Controls.dll中的代码:
public class CustomWindow : Window { static CustomWindow() { DefaultStyleKeyProperty.OverrideMetadata( typeof(CustomWindow), new FrameworkPropertyMetadata(typeof(CustomWindow))); }
现在,在另一个程序集中,我创建了XAML文件并尝试使用它:
我所看到的:大黑屏,没有别的,没有更少(大黑矩形 – 没有标题栏)。 任何人都可以对此有所了解吗? 通过一些谷歌搜索,我发现其他人有同样的问题,所以我想这不是我特定的。
禁用硬件渲染没有帮助。
您需要从CustomWindow-class中删除静态构造函数。 设置DefaultStyleKey的目的是帮助WPF找到应在Themes / Generic.xaml中定义的defaulttemplate。 但既然你不想这样做,那么你需要删除它。
我通过将CustomWindow类添加到类库项目(必须导入相当多的依赖项)来测试您的代码,然后在WPF项目中使用它。 随着你的构造函数到位,窗口的所有内容都是黑色的,一旦我删除它,一切都很完美。
这是制作自己的控件的好资源
// Chris Eelmaa:这是正确的,我还想补充一点,也可以将Themes /
ThemeInfo
添加到你的dll中,然后你需要将程序集ThemeInfo
属性添加到你的DLL(AssemblyInfo.cs) ,为了它的工作:
// http://blogs.magnatis.com/tim/dude-wheres-my-default-style [assembly: ThemeInfo( ResourceDictionaryLocation.None, //where theme specific // resource dictionaries are located ResourceDictionaryLocation.SourceAssembly //where the // generic resource dictionary is located )]