_baseDictionary; // ReferenceCopy all the entries in the MergedDictionaries collection _mergedDictionaries = loadedRD. _baseDictionary; // 取出资源字典加载的其他资源字典 _mergedDictionaries = loadedRD. _mergedDictionaries = loadedRD. 获取不到在从 MergedDictionaries 里面获取,最后添加的资源字典最先寻找。
Application.Resources>节点内添加如下内容 <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries Source="pack://application:,,,/Panuon.UI.Silver;component/Control.xaml" /> </ResourceDictionary.MergedDictionaries 如果我们引用的有其他的样式 <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary ResourceDictionary Source="pack://application:,,,/Panuon.UI.Silver;component/Control.xaml" /> </ResourceDictionary.MergedDictionaries
StartupUri="MainWindow.xaml"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries application:,,,/MahApps.Metro;component/Styles/Themes/Light.Blue.xaml" /> </ResourceDictionary.MergedDictionaries <Controls:MetroWindow.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries application:,,,/MahApps.Metro;component/Styles/Themes/Dark.Red.xaml" /> </ResourceDictionary.MergedDictionaries
= Application.Current.Resources.MergedDictionaries; //先将当前资源字典清空,再添回暗黑主题DarkTheme if (mergedDictionaries = null) { mergedDictionaries.Clear(); mergedDictionaries.Add(new DarkTheme()); = Application.Current.Resources.MergedDictionaries; //先将当前资源字典清空,再添回暗黑主题DarkTheme if (mergedDictionaries = null) { mergedDictionaries.Clear(); mergedDictionaries.Add(new DarkTheme()); = null) { mergedDictionaries.Clear(); mergedDictionaries.Add(new LightTheme());
如果有多个应用程序资源集, 请将 <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/> 添加到 Application.Resources.MergedDictionaries Application> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" /> </ResourceDictionary.MergedDictionaries
MainWindow.xaml"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries ResourceDictionary Source="Dictionary2.xaml"></ResourceDictionary> </ResourceDictionary.MergedDictionaries ResourceDictionary Source="Dictionary2.xaml"></ResourceDictionary> </ResourceDictionary.MergedDictionaries Dictionary1.xaml 加入之前,添加以下代码用来获取静态绑定资源引用属性的值 var value = ((System.Windows.Setter) (Resources.MergedDictionaries StartupEventArgs e) { // 注释这句话试试 var value = ((System.Windows.Setter) (Resources.MergedDictionaries
> <ResourceDictionary Source = "Style/Common.xaml" /> </ResourceDictionary.MergedDictionaries > </ResourceDictionary > </Application.Resources > 为了方便调用外部资源文件,资源字典(ResourceDictionary)提供了MergedDictionaries Source="test1.xaml" /> <ResourceDictionary Source="test2.xaml" /> </ResourceDictionary.MergedDictionaries [image.png](./10) 在上面代码的ResourceDictionary.MergedDictionaries中定义多个外部资源文件,其查找资源顺序是从下往上逆序查找的。 Color="Black"></SolidColorBrush> </ResourceDictionary> </ResourceDictionary.ThemeDictionaries> 与MergedDictionaries
此时如果让 DictionaryB 通过 MergedDictionaries 的方式引用 DictionaryC 字典,将存在一个性能问题,那就是在创建资源的时候,如果在 App.xaml 里面也引用了 一次是在 App.xaml 里面的,一次是在被 DictionaryB 的 MergedDictionaries 创建的,换句话说将会让 DictionaryC 里面的对象重复两次定义,占用资源也添加了启动时间 > <ResourceDictionary Source="DictionaryC.xaml"/> </d:ResourceDictionary.MergedDictionaries /> <ResourceDictionary Source="DictionaryB.xaml"/> </ResourceDictionary.MergedDictionaries > <ResourceDictionary Source="DictionaryD.xaml"/> </ResourceDictionary.MergedDictionaries
schemas.modernwpf.com/2019"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries <ui:ThemeResources /> <ui:XamlControlsResources /> </ResourceDictionary.MergedDictionaries
schemas.modernwpf.com/2019"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries <ui:ThemeResources /> <ui:XamlControlsResources /> </ResourceDictionary.MergedDictionaries
项目的 App.Xaml 中引用: <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries Source="pack://application:,,,/Rubyer;component/Themes/Generic.xaml" /> </ResourceDictionary.MergedDictionaries
全局资源样式属性
App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries >
<ResourceDictionary Source="Dictionary.xaml"/>
</ResourceDictionary.MergedDictionaries MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries --或者这样方式DemoForm;component/UI/Dictionary1.xaml 引用以后就可以继承了-->
</ResourceDictionary.MergedDictionaries
WelcomeWin.xaml"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries //application:,,,/Resources/OverwrideDefaultControlStyles.xaml" /> </ResourceDictionary.MergedDictionaries
Fx"); Dispatcher.InvokeAsync(() => { Resources.MergedDictionaries.Add } } //Search for the value in the Merged Dictionaries if (_mergedDictionaries = null) { for (int i = MergedDictionaries.Count - 1; (i > -1) && ! result; i--) { // Note that MergedDictionaries collection can also contain null values ResourceDictionary mergedDictionary = MergedDictionaries[i];
StaticResource value}" /> 多个资源 <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries ResourceDictionarySource="Res.xaml"/> <ResourceDictionarySource="Res.xaml"/> </ResourceDictionary.MergedDictionaries
try { var existingResourceDictionary = Application.Current.Resources.MergedDictionaries newResourceDictionary = new ResourceDictionary() { Source = new Uri(source) }; App.Current.Resources.MergedDictionaries.Remove (existingResourceDictionary); App.Current.Resources.MergedDictionaries.Add(newResourceDictionary
项目的 App.Xaml 中引用: <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries Source="pack://application:,,,/Rubyer;component/Themes/Generic.xaml" /> </ResourceDictionary.MergedDictionaries
在 XAML 引用的逻辑如下 <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries > <local:Foo></local:Foo> </ResourceDictionary.MergedDictionaries> 在上面代码定义了一个测试使用的代码,尝试使用 StaticResource Foo 静态资源,这个静态资源是定义在后台代码的资源字典的,运行代码可以看到能绑定上 而在后台代码添加引用的方法如下 Resources.MergedDictionaries.Add
schemas.modernwpf.com/2019"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries <ui:ThemeResources /> <ui:XamlControlsResources /> </ResourceDictionary.MergedDictionaries
x:Key="PrimaryBrush" Color="{StaticResource PrimaryColor}" /> 资源查找顺序:元素 → 父级 → ResourceDictionary.MergedDictionaries }" Content="保存"/> 6.2 动态主题 <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries Themes/Light.xaml"/> <ResourceDictionary Source="Themes/Dark.xaml"/> </ResourceDictionary.MergedDictionaries > </ResourceDictionary> </Application.Resources> 在运行时切换 MergedDictionaries 顺序即可实现亮/暗主题。