自定义窗口类访问另一个程序集中的资源的问题

时间:2011-08-31 16:08:08

标签: c# wpf resources

我第一次涉足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,但我还没弄清楚我需要在构造函数中使用哪种类型。

我需要一个非常好的教程,或者至少需要朝着正确的方向努力,但这种东西对谷歌来说真的很难成功。

0 个答案:

没有答案