【问题标题】:Using Resource Dictionaries in .NET Standard在 .NET Standard 中使用资源字典
【发布时间】:2020-04-15 00:44:48
【问题描述】:

我想知道如何在新的 .NET 标准中使用资源字典。我想知道我们如何将资源字典放入 .NET 标准类库中,就像在经典的 .Net Framework 类库和 WPF 中所做的那样。

为了在经典的 .NET Framework 中澄清,我们有一个资源字典,让我们在类库中将其命名为 styles.xaml,以便它可以在多个应用程序中使用。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

</ResourceDictionary>

然后将在 WPF 应用程序的 app.xaml 文件中引用下面的 sn-p,有点像这样。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

所以我正在寻找在新的 .NET 标准中实现这一目标的等效方法。提前谢谢你。

【问题讨论】:

  • .NET Standard 中 Styles.xaml 的 BuildAction 是什么?
  • 我没想到会看那个。构建操作默认设置为页面,就像使用 WPF 一样。

标签: c# .net xaml


【解决方案1】:

这可能是可能不太好的路径。 我做了一个简单的项目来尝试看看它是否有效。 使用 pack 类型的 URI 会引发编译错误:找不到文件。 但是,如果我尝试使用绝对路径,则它适用于 StaticResource 和 DynamicResource。 (它也应该适用于相对路径)。

据我所知,为什么我不能将某些 Telerik 样式与 pack URI 类型的路径一起使用并且必须对这些样式使用相对路径,而我仍然可以将 pack 用于经典样式,这是有道理的.NET 项目。 (我可能错了,这只是基于这个概念验证项目的观察)

(我已尝试将构建操作设置为页面或嵌入式资源,但两者都适用,因此可能不是这样)

见下文。

【讨论】:

  • 我注意到您在资源字典和 Styles.xaml 中的子元素下仍然有警告突出显示,但从它的外观来看,它仍然可以成功编译和运行。是这样吗?为了澄清我这样做的原因是 WPF 客户端应用程序和服务器应用程序可以使用这些样式。我正在使用 .NET Standard,因此我希望这些资源也能用于 Android 和 iOS 客户端,即使我必须为此编写一些东西,这对我来说是值得的。
  • 我将在几分钟后尝试一下。我希望我的澄清也能更好地描述我在这里所做的事情。即使我必须想出一种不同的移动方式,Windows 桌面应用程序仍然非常需要它,我希望将它存储在 .NET Standard 库中。
  • 我相信这里需要一个相对路径。我可以在这里看到包 URI 可能是一个问题。希望这只是由于 .NET Standard 的不成熟。
  • 这似乎可行,但我担心绝对路径在部署到另一台机器时会导致问题。我一直在尝试使用不涉及 Pack Uri 但还没有运气的相对路径做一些事情。仍然在这方面摸不着头脑。
  • 我会尝试查看相对路径。除了颜色,您不会在 Android/iOS 和 WPF 之间共享任何内容。如果您使用 Xamarin Forms,则它不是同一个组件(甚至有些组件的名称与 Grid 相同)。我了解您:我也为此创建了一个 .NET Standard 项目。但是由于限制,我的团队回滚了 WPF 的经典项目库。到目前为止,没有遗憾。除了感觉使用 .NET Standard 的食物之外,以更少的可能性使这种痛苦有什么意义? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
相关资源
最近更新 更多