我在跨多个程序集引用 ResourceDictionaries (RD) 时遇到问题。
我目前遇到的具体问题是资源和样式在设计时应用于 LoginWindow 而不是在运行时。
我还想确定 RD/资源是否以与 DataContext 相同的方式工作。
我有点不知所措,我认为我缺少一些关于 WPF 如何处理 RD 和资源等的基本知识
对于上下文,我有两个正在使用的程序集。
ControlsAndResources(包含一般控件和资源/样式)
登录(处理登录 ui 和逻辑;这包含对 ControlsAndResources 的引用)
ControlsAndResources 程序集包含 5 个简单的 RD。这些都放在/Styles/Default
Base.xaml(包含 FrameworkElement 和控件的基本样式)
Buttons.xaml(从基本控件样式继承)
Textblocks.xaml(继承自 Base FrameworkElement 样式)
Textboxes.xaml(从基本控件样式继承)
Package.xaml(将“Buttons.xaml”、“Textblocks.xaml”和“Textboxes.xaml”打包到单个 RD 中,并包含另一个为“Button”、“Textblock”和“Textbox”类型创建隐式样式的 RD )
Login 程序集包含 LoginWindow.xaml。(这包含对“Package.xaml”的引用,其意图是隐式样式将应用于“LoginWindow”中包含的“Textblock”、“Textbox”和“Button”——它们只是在设计时才这样做,而不是在运行时)
我注释掉了对“DefaultStyles.xaml”RD 的引用,它实际上只是封装了相同的“Package.xaml”RD。出于某种原因,我认为解决方案是在同一个程序集中创建一个物理 RD,然后从不同的程序集中引用我想要的 RD。没有。
我对 WPF 相当精通和舒适,这个主题是个例外,因为我才开始将我的样式提取到单独的 RD。我推迟了它,因为与经理打交道似乎很头疼。到目前为止,我似乎是对的。但是我决定开始这个是为了真正遵守 DRY 原则。话虽如此,根据目前的代码,虽然微不足道,但如果有人有更好地遵守 DRY 原则的建议(或者真的有任何建议),那么我会全力以赴。
谢谢。
海绵宝宝撒
相关分类