ResourceDictionary as NuGet Package



我目前正在尝试创建一种XAML"样式集合"我们可以在所有的UI项目中使用它,以实现视觉效果的一致性。

我试着创建了一个类库,并添加了一个具有我风格的ResourceDictionary

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="ToggleSwitch" TargetType="{x:Type CheckBox}">
Some style in here
</Style>
</ResourceDictionary>

启用在构建选项中构建NuGet包,并将其添加到另一个UI项目中。我只是现在不太清楚如何在UI项目中实际使用这种风格。

这是一种有效的方法吗?在谷歌上搜索这个特定的意图并没有给我任何合理的结果。

这是一种有效的方法,与在本地创建和使用资源字典没有什么不同,只是如果它们位于被引用的程序集中,则如何引用它们。

作为直接在程序集中的程序集YourReferencedAssembly.dll和资源字典YourStyleResourceDictionary.xaml的应用程序资源的示例。

<Application.Resources>
<ResourceDictionary>
<!-- ...other resources. -->
<ResourceDictionary.MergedDictionaries>
<!-- ...other resource dictionaries. -->
<ResourceDictionary Source="pack://application:,,,/YourReferencedAssembly;component/YourStyleResourceDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

源路径是一个所谓的pack-URI,可以采取各种形式。您可以参考资源文件包URI文档。这就是引用程序集中资源的路径的详细外观:

授权:application:///

路径:编译为引用程序集的资源文件的名称。路径必须符合以下格式:

AssemblyShortName{;Version]{;PublicKey];component/Path

AssemblyShortName:引用程序集的短名称。

;Version[可选]:包含资源文件的引用程序集的版本。当加载具有相同短名称的两个或多个引用程序集时,将使用此选项。

;PublicKey[可选]:用于对引用的程序集进行签名的公钥。当加载具有相同短名称的两个或多个引用程序集时,将使用此选项。

;component:指定要引用的程序集是从本地程序集引用的。

/Path:资源文件的名称,包括其路径,相对于被引用程序集的项目文件夹的根。

隐式样式通常会自动应用于添加资源字典的作用域中,并且使用StaticResourceDynamicResource引用显式

最新更新