Wpf 如何修改默认控件主题?
我想修改项目的默认控件模板。对于我的第一个更改,我只想在每个主题中为listview的ScrollViewer建立一个部件名 以下是我的结构: MyControlLibrary:定义一对控件并定义标准wpf控件的主题。 MyApplication:使用控件库和包含的主题 以下是我到目前为止所了解到的情况。 从以下站点下载默认主题: 将下载的主题添加到MyControlLibrary的themes文件夹中,添加必要的引用,并修改xmlns:theme命名空间以引用程序集 从这里开始,我还不知道下一步该怎么办。如果只是覆盖模板,这并不太难,但我希望应用程序仍然具有主题意识 提前谢谢 编辑: 好的,我找到了解决办法。我希望这对其他人有帮助 更新你的App.xamlWpf 如何修改默认控件主题?,wpf,wpf-controls,Wpf,Wpf Controls,我想修改项目的默认控件模板。对于我的第一个更改,我只想在每个主题中为listview的ScrollViewer建立一个部件名 以下是我的结构: MyControlLibrary:定义一对控件并定义标准wpf控件的主题。 MyApplication:使用控件库和包含的主题 以下是我到目前为止所了解到的情况。 从以下站点下载默认主题: 将下载的主题添加到MyControlLibrary的themes文件夹中,添加必要的引用,并修改xmlns:theme命名空间以引用程序集 从这里开始,我还不知道下一
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="{ThemeDictionary AssemblyName=AssemblyWithThemes}"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!-- other styles go here -->
</Application.Resources>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="{ThemeDictionary AssemblyName=AssemblyWithThemes}"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!-- other styles go here -->
</Application.Resources>
其中AssemblyWithThemes是包含主题文件的Themes\文件夹的程序集的名称。我相信程序集也需要从您的应用程序中引用
非常重要的是,如果在App.xaml文件中直接包含其他资源,请将它们放置在上面的注释处,否则包含ResourceDictionary的内容将成为另一个资源,而不是设置Application.resources属性
然后,所有其他样式都需要指定BasedOn属性以保留主题更改。对于动态创建的窗口,我使用了新样式(类型),它阻止使用覆盖的主题。更改为新样式(类型、样式)后,它工作得非常好。好的,我找到了解决方案。我希望这对其他人有帮助 更新你的App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="{ThemeDictionary AssemblyName=AssemblyWithThemes}"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!-- other styles go here -->
</Application.Resources>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="{ThemeDictionary AssemblyName=AssemblyWithThemes}"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!-- other styles go here -->
</Application.Resources>
其中AssemblyWithThemes是包含主题文件的Themes\文件夹的程序集的名称。我相信程序集也需要从您的应用程序中引用
非常重要的是,如果在App.xaml文件中直接包含其他资源,请将它们放置在上面的注释处,否则包含ResourceDictionary的内容将成为另一个资源,而不是设置Application.resources属性
然后,所有其他样式都需要指定BasedOn属性以保留主题更改。对于动态创建的窗口,我使用了新样式(类型),它阻止使用覆盖的主题。更改为新样式(类型、样式)后,效果非常理想。请将解决方案作为答案张贴在底部,而不是将其编辑到您的问题中,这样您就可以将其标记为已回答。