代码源
代码源(ISource)是 Acss 源代码的来源。目前我们提供了两种类型的代码源,本地代码源(FileSource)和嵌入代码源(EmbeddedSource)。
本地代码源
本地代码源使用本地文件作为代码输入。我们支持两种加载方式,按文件加载或者按目录加载。
1. 按文件加载
var loader = AcssContext.Default.GetService<IAcssLoader>();
var source1 = new FileSource("Acss/Case.acss");
loader.Load(Application.Current.Styles, source1);
// Use prefer path $"{debugRelative}Acss/Case.acss" if it is valid.
// Or use the path "Acss/Case.acss".
var source2 = new FileSource("Acss/Case.acss", $"{debugRelative}Acss/Case.acss");
loader.Load(Application.Current.Styles, source2);
2. 按目录加载
var loader = AcssContext.Default.GetService<IAcssLoader>();
loader.LoadCollection(this, new FileSourceCollection("Acss/"));
loader.LoadCollection(this, new FileSourceCollection("Acss/", "../../Acss/"));
无论按文件加载还是按目录加载,都支持优先路径。优先路径有效时,会被优先使用。这在调试环境下十分有用。
我们可以优先使用源代码所在目录,而把当前程序下的目录作为第二选择。
嵌入代码源
我们也支持将代码源以 Avalonia 资源的形式嵌入到程序当中。EmbeddedSource 的三个参数用法请参考如何使用 Acss.Fluent。
嵌入资源的方式对单个文件打包的方式更加友好。
1. 单个 Uri 加载
var loader = AcssContext.Default.GetService<IAcssLoader>();
loader.Load(
Application.Current.Styles,
new EmbeddedSource(
new Uri("avares://Nlnet.Avalonia.Css.Fluent/Acss/AccentColor.acss"),
PreferLocalPath,
UseRecommendedPreferSource,
AutoExportSourceToLocal));
2. 按 Uri 批量加载
var loader = AcssContext.Default.GetService<IAcssLoader>();
loader.LoadCollection(
Application.Current.Styles,
new EmbeddedSourceCollection(
new Uri("avares://Nlnet.Avalonia.Css.Fluent/Acss/"),
PreferLocalPath,
UseRecommendedPreferSource,
AutoExportSourceToLocal));
最后更新于
这有帮助吗?