【问题标题】:Custom control styles not working (via Generic.xaml)自定义控件样式不起作用(通过 Generic.xaml)
【发布时间】:2017-05-16 19:00:53
【问题描述】:

我在外部自定义控件库项目中为标准 WPF 控件和自定义控件提供了几种样式和模板。对于每个控件,在我的 \Themes 文件夹中都有一个 ResourceDictionary,以及一个包含所有其他 XAML 文件的合并字典的 Generic.xaml

我确定:

  • Generic.xaml 位于我的项目根目录下的 Themes\ 文件夹中
  • Generic.xamlBuild ActionPage
  • Generic.xaml 使用自定义工具标志MSBuild:Compile
  • 外部库声明了以下行:[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]

我尝试了什么:

来源

  • Source="MyControl.xaml"
  • Source="/MyLibrary;component/Themes/MyControl.xaml"
  • Source="/MyLibrary;component/Themes/MyControl.xaml"
  • Source="/pack://application:,,,/Themes/MyControl.xaml"
  • Source="/pack://application:,,,/MyLibrary;component/Themes/MyControl.xaml"

应用

  • 在我的应用程序中手动引用 Generic.xaml 以及所有可能的源声明

但是,没有任何效果。即使在访问 Application.Current.Resources 时我可以看到所有字典都已加载,该应用程序仍完全没有主题。

还值得注意的是,我的大多数控件主题都包含额外的动态资源(用于颜色等),这些资源是在应用程序启动时手动加载的。

似乎我面临与 OP in this question here 完全相同的未解决问题,但他们表示手动引用 Generic.xaml 对他们有效。

【问题讨论】:

  • 如果您在尝试应用样式和 generic.xaml 的位置发布简化的消费者 xaml 可能会有所帮助。

标签: c# .net wpf xaml themes


【解决方案1】:

您是否在静态构造函数中定义了以下代码?

DefaultStyleKeyProperty.OverrideMetadata (typeof (YourCustomClass),new FrameworkPropertyMetadata (typeof (YourCustomClass)));

不要在资源字典中使用 x:key ="style_name"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2015-08-17
    • 1970-01-01
    • 2019-04-21
    • 2016-08-09
    相关资源
    最近更新 更多