我第一次涉足WPF,一直在创建一个applcation(ABC)和一个类库(XYZ)解决方案,将用于所有未来的应用程序。
为了重用ABC中的窗口,所有应用程序都具有一致的外观,我创建了一个继承自System.Windows.Window
的基类。此类位于名称空间XYZ.Windows中的XYZWindows类库项目中。我还有一个名为XYZResources的类库项目,它包含(目前)由几十种样式组成的两个主题皮肤。
在应用程序ABC中,我能够通过App.xaml中的代码引用这些外观:
public void ApplySkin( ThemedSkin Skin ) {
Collection<ResourceDictionary> merged = base.Resources.MergedDictionaries;
switch( Skin ) {
case ThemedSkin.Dark:
merged[0].Source = new Uri( "pack://application:,,,/XYZResources;component/Themes/Dark.xaml", UriKind.Absolute );
case ThemedSkin.Light:
merged[0].Source = new Uri( "pack://application:,,,/XYZResources;component/Themes/Light.xaml", UriKind.Absolute );
}
}
作为WPF的新手,我不确定我在哪里发现了这个但它有效并且我能够使用{Dynamic Resource}
全局设置所有控件的样式以及在XAML中引用各个样式。因为我的窗口类是我第一次尝试在代码中严格创建窗口,所以我不确定如何访问我的样式。
我修改了ComponentResourceKey,但我还没弄清楚我需要在构造函数中使用哪种类型。
我需要一个非常好的教程,或者至少需要朝着正确的方向努力,但这种东西对谷歌来说真的很难成功。