我创建了一个外部控件库,它承载了一些资源字典等。我的问题是当我尝试在窗口元素上应用样式时。样式的更改仅在运行模式下可见!!!
我的控件库中的资源字典示例:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="Window_Style" TargetType="Window">
<Setter Property="Background" Value="#FF272727"/>
</Style>
</ResourceDictionary>
以下是我如何将外部资源字典包含到应用中的方法:
<Application x:Class="SigmaLibMaster.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SigmaLibMaster"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/SigmaLib;component/Resources/Styles/Window.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
以及如何将其应用于窗口元素:
<Window x:Class="SigmaLibMaster.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SigmaLibMaster"
mc:Ignorable="d"
Title="MainWindow" Height="480" Width="840"
Style="{DynamicResource Window_Style}">
<Grid >
</Grid>
</Window>
你知道为什么会这样吗?
- PS:**请记住,我最近从
WinForms
切换到WPF
!!:)
- PS:**请记住,我最近从
1条答案
按热度按时间7kqas0il1#
有时您会发现库中的资源在设计时不起作用。
这是一个错误的海事组织。
我使用的工作循环是设计时资源。
这是一个最初为blend设计的机制,但是visual studio中的wpf设计器现在与blend是同一个设计器。
我有一个图书馆叫uilib。
在它的属性中,我添加了一个名为DesignTimeResources.xaml的资源字典,它必须是这个名称。
在csproj中,我有以下内容:
请特别注意ContainsDesignTimeResources标记。
它合并了我在uilib中的一些资源字典:
当你构建的时候,它不会在额外的时间里合并这些资源。标签中的条件意味着它只是设计时间。你可能会通过搜索找到更多关于它的信息。
https://dennymichael.net/2016/07/28/wpf-design-time-resources-dictionary/